как предварительно вычитать на строку - PullRequest
1 голос
/ 30 января 2011

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

Iдумаю, проблема в том, что я пытаюсь вычесть "1" из строки "$ (this) .attr ('num')"

Это может сработать, если я сначала преобразую "$ (this) .attr ('num ') "в целое число, а затем вычесть из него" 1 ".

Я открыт для любых других решений.Спасибо

//

$("#jumpPreviousButton").click(function(){
var imageNumber = $(this).attr('num'); 
  $("#bgImageBox").css({
    "background-image": "url(/galleryImages/worksImage"
    + imageNumber - 1

    +".jpg)"
  }).attr('num', imageNumber - 1);

  return false;}
);

//

Ответы [ 5 ]

5 голосов
/ 30 января 2011

Как вы говорите, сначала преобразуйте его в целое число.Для этого используйте функцию parseInt().:) (Или parseFloat(), если это число с плавающей запятой.)

4 голосов
/ 30 января 2011

Почему вы не используете функцию jquery data() вместо attr() для добавления поля num в ваш тег.

  1. Данные Jquery не приведут к аннулированию вашей разметки
  2. Вы можете добавить любой тип данных в данные, поэтому нет необходимости использовать parseInt

Например: HTML:

<html>
    <body>
        <p>hello</p>  
    </body>
</html>

JS:

$('p').data('foo',52);
var val = $('p').data('foo');
alert(val);
$('p').data('foo', val + 1);
alert($('p').data('foo'));

Это предупредит 52, а затем 53. Вы можете увидеть демо здесь .

4 голосов
/ 30 января 2011

использовать parseInt, но не использовать parseInt без radix

Функция parseInt () анализирует строку и возвращает целое число.

Подпись parseInt(string, radix)

, поэтому ответ на ваш вопрос таков:

  var imageNumber = parseInt($(this).attr('num'), 10);

Второй аргумент вынуждает parseInt использовать систему нумерации с основанием десять.*

  • Тип ввода по умолчанию для ParseInt () - десятичный (основание 10).
  • Если число начинается с «0», оно считается восьмеричным (основание 8).
  • Если он начинается с "0x", предполагается, что он является шестнадцатеричным

почему? если бы $ (this) .attr ('num') было бы "08", parsInt без основания стало бы 0

3 голосов
/ 30 января 2011

parseInt () - ваш друг;)

var imageNumber = parseInt($(this).attr('num')); 
3 голосов
/ 30 января 2011
(parseInt(imageNumber) - 1)

если число является целым числом.

...