So präformieren Sie die Subtraktion auf einer Zeichenfolge
-
27-10-2019 - |
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;}
);
//
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.
- Die Daten von JQuery werden Ihr Markup nicht ungültig machen
- 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'));