2015-03-26 3 views
2

Я относительно новичок в Javascript, и я пытаюсь создать простую игру, в которой метеорит падает случайным образом. Моя проблема в том, что каждый раз, когда цикл for играет, метеорный div должен добавить математику на свое расстояние от вершины, но я не знаю, как это сделать. Взгляните на текущий код, и вы увидите, что #meteor оживает с помощью «math». Этот код не работает. Любые идеи о том, как заставить его работать?Использование переменных в javascript css property

Спасибо, вход оценили!

var math = Math.round(Math.random * 5) 
     for(var i = 0; i <= height/3; i++) { 
      $('#meteor').animate({top: "+=math"}, 1) 
     } 
+2

Можете ли вы опубликовать полный пример кода, пожалуйста? Кроме того, вы пробовали '{top: + = math}'? – j08691

+1

Вы устанавливаете свойство * top * в строку '' + = math "', что вы на самом деле хотите сделать? – RobG

+0

@ j08691 - составное назначение должно присваивать что-то, его нельзя использовать так. – RobG

ответ

0

попробовать следующие один

for(var i = 0; i <= height/3; i++) { 
    var math = Math.round(Math.random * 5) 
    $('#meteor').animate({top: "+="+math}, 1); 
} 
+0

Спасибо! Я использовал ваш метод, и он сработал! –

+0

@ Rusty25, Радует свою работу за вас, тогда, пожалуйста, отметьте в качестве ответа и upvote –

0

Если вы пытаетесь увеличить значение верхней по математике на каждой итерации, то вы хотите что-то вроде:

$('#meteor').animate({top: math * i}, 1) 
3

Несколько вещей. Всякий раз, когда вы окружаете что-либо в JS кавычками, оно рассматривается как строка, поэтому, хотя у вас есть переменная math, поскольку она находится в кавычках, она обрабатывается как строка 'math'. Другое дело, что += должен что-то придумать, чтобы работать и не может использоваться с jQuery так, как вы пытаетесь.

Чтобы просто получить код работает, изменить его к этому:

var math = Math.round(Math.random * 5) 
for(var i = 0; i <= height/3; i++) { 
    // Gives the 'top' value for meteor. parseInt removes the 
    // 'px' that will show up on the end and return type int 
    var meteorTop = parseInt($('#meteor').css('top')); 
    $('#meteor').animate({top: meteorTop + math}, 1); 
} 

Тем не менее, ваши анимации собираются перекрывать, и вы будете хотеть, чтобы ждать между анимацией или иначе они будут вызывать на вершине друг от друга, а не работать так, как вы хотите.

Только вид связанных, ситуация, в которой += работы заключается в следующем:

var int = 0; 
int += 2; // int = 2; this is the same as: int = int + 2; 
int += 3; // int = 5; this is the same as: int = int + 3; 

Вы должны добавить один и тот же тип к себе, JS будет сделать некоторые интерпретации для вас, но вы всегда должны использовать += с такой же тип. string += string или int += int.

Смежные вопросы