Вопрос

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

Я думаю, что проблема в том, что я пытаюсь вычесть «1» из строки «$ (это) .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;}
);

//
Это было полезно?

Решение

Используйте Parseint, но не используйте Parseint без Радикс

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

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

Итак, ответ на ваш вопрос:

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

Второй аргумент заставляет Parseint использовать систему нумерации базовой десяти.

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

Почему? Если $ (this) .attr ('num') будет «08» parsint без Radix станет 0

Другие советы

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

Почему бы вам не использовать 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. Анкет Вы можете увидеть демонстрацию здесь.

(parseInt(imageNumber) - 1)

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

Функция parseint () - ваш друг;)

var imageNumber = parseInt($(this).attr('num')); 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top