Frage

Abgesehen davon, dass illegale Attribute in ein Tag eingefügt und mein HTML ungültig gemacht werden, habe ich noch nie das getan, was ich zuvor versuche, und werde höchstwahrscheinlich von dieser Antwort in anderen Bereichen meiner Arbeit profitieren.

Ich denke, das Problem ist, dass ich versuche, "1" von einer Zeichenfolge "$ (this) .attr ('Num') abzuziehen" "

Dies kann funktionieren, wenn ich zuerst "$ (this) .attr ('num')" in eine Ganzzahl umwandle und dann "1" von ihm subtrahiere.

Ich bin offen für andere Lösungen. Vielen Dank

//

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

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

  return false;}
);

//
War es hilfreich?

Lösung

Verwenden Sie ParseInt, verwenden Sie aber nicht ohne a Radix

Die Funktion parseInt () analysiert eine Zeichenfolge und gibt eine Ganzzahl zurück.

Die Signatur ist parseInt(string, radix)

Die Antwort auf Ihre Frage lautet also:

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

Das zweite Argument erzwingt analysiert, ein Basiszehn -Nummerierungssystem zu verwenden.

  • Der Standardeingangstyp für ParseInt () ist dezimal (Basis 10).
  • Wenn die Zahl in "0" beginnt, wird angenommen, dass sie Oktal ist (Basis 8).
  • Wenn es in "0x" beginnt, wird angenommen, dass es hexadezimal ist

warum? Wenn $ (this) .Attr ('num') "08" -Parsint ohne Radix wäre, wird 0

Andere Tipps

Wie Sie sagen, wird es helfen, es zuerst in Ganzzahl zu konvertieren. Verwenden Sie das parseInt() dafür funktionieren. :) (Oder parseFloat() Wenn es sich um eine schwimmende Punktzahl handelt.)

Warum benutzt du JQuery nicht? data() Funktion anstelle von attr() So fügen Sie das NUM -Feld Ihrem Tag hinzu.

  1. Die Daten von JQuery werden Ihr Markup nicht ungültig machen
  2. Sie können Datentypen in Daten hinzufügen, sodass keine Verwendung verwendet werden muss parseInt

Zum Beispiel: 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'));

Dies wird alarmieren 52 und dann 53. Sie können eine Demo sehen hier.

(parseInt(imageNumber) - 1)

Wenn die Zahl eine Ganzzahl ist.

ParseInt () Funktion ist dein Freund;)

var imageNumber = parseInt($(this).attr('num')); 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top