2013-12-11 4 views
-1

Я пытаюсь получить математику для этого, возможно, отсутствует что-то простое. Он должен выплюнуть дислокацию, но я получаю NaN. Вот мой код., сравнивая два attr со значениями

Jquery

console.log("-----" +$('.images').attr('dis') - $('.images').attr('loc') 
         ); 

Я понимаю, что я мог бы поместить их в вар, но это должно работать на возможно 30 изображений.

<img style="left: -195px; height: 882px;" class="images" speed-racer="55" src="-------/assets/img/fwman/FeeneyMan_bike.png" loc="300px" dis="-140"> 

Я должен держать HTML скрытый, поэтому я не хочу поделиться этим .. Но спасибо за -2 = р

/------------ --------------------------------------/ Спасибо всем за ваш ввод, окончательный код работал должным образом.

$('.images').each(function() { 
     speed_racer = $(this).attr('speed-racer'); 
     $(this).css({ 
      left: "+=" + (parseFloat($('.images').attr('dis')) - parseFloat($('.images').attr('loc'))/parseFloat($('.images').attr('dis')) 
    ) 
    }); 
+0

можно ли увидеть ваш html? – Phil

+0

Html не нужен. – Cam

+0

Можете ли вы, пожалуйста, поделиться своим html? –

ответ

1

Используйте parseFloat & кронштейны тщательно.

console.log("-----" + (parseFloat($('.images').attr('dis')) - parseFloat($('.images').attr('loc')))); 

EDIT:

Разница между parseFloat & ParseInt (заданный OP) с примером:

parseFloat("1.02") = 1.02 //includes decimal 
parseInt("1.02") = 1 //ignores digits after decimal point 
+0

В чем разница между parseFloat и parseInt ??? – Cam

+1

@cam, очевидно, тип данных возврата ... один возвращает число с плавающей запятой, в то время как другое возвращает полное число на пол – Vogel612

+0

. Работала. Объяснение parseFloat было бы замечательным, я не знаком с этим, так как я вникая в более математические вычисления, это принесло бы большую пользу. – Cam

3

Пробуйте так. Обратите внимание, что дополнительные ()

console.log("-----" + ($('.images').attr('dis') - $('.images').attr('loc'))); 

Я думаю, что причина в том, что вы добавляете строку в число, а затем вы вычитая их обоих.

+0

Все еще получая NaN – Cam

+2

@Cam, пожалуйста, покажите нам значения 'dis' и' loc' – Spokey

2

Вы пытались фактически преобразовать эти строковые значения в целые числа, используя parseInt() или parseFloat()?

var value = parseInt($('.images').attr('dis')) - parseInt($('.images').attr('loc')); 
console.log("-----" + value); 
+0

Да, я пробовал это, но не с дополнительным(). Делаешь сейчас. – Cam

+0

Все еще получать NaN. – Cam

+0

Как правило, с помощью parseInt вам нужно включить значение radix. Итак parseInt (thingToParse, 10) для целых чисел base10. –

0

не те должны быть атрибуты данных?

console.log("-----" +$('.images').attr('data-dis') - $('.images').attr('data-loc')); 
1

Поскольку у вас есть около 30 изображений на вашем сайте $('.images').attr('dis') будет иметь несколько результатов. Таким образом, вам нужно использовать foreach, например:

$('.images').each(function(){ 
    console.log(parseFloat($(this).attr('dis')) - parseFloat($(this).attr('loc'))); 
}) 
+0

Jurik, у меня есть это уже написанное, но спасибо за ваш вклад. Я это ценю. – Cam

+1

Хорошо, проголосовал за ваш вопрос, но все же -2 - Я ненавижу его, когда **** downvote перед тем, как думать. – Jurik

+0

Его хорошо, его причина, я не хочу публиковать HTML, иногда меня беспокоят, что ответы усложняются, добавляя слишком много информации. – Cam

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