Ich versuche also, aus einem String und einer übergebenen Variablen (die eine Zahl ist) einen String zu machen. Wie mache ich das?
Ich habe so etwas:
function AddBorder(id){
document.getElementById('horseThumb_'+id).className='hand positionLeft'
}
Wie bekomme ich dieses 'HorseThumb' und eine ID in eine Zeichenfolge?
Ich habe all die verschiedenen Optionen ausprobiert, auch gegoogelt und abgesehen davon, dass ich eine Variable in eine solche Zeichenfolge einfügen kann getElementById("horseThumb_{$id}")
<- (hat bei mir nicht funktioniert, ich weiß nicht warum), fand ich nichts Nützliches. Daher wäre jede Hilfe sehr dankbar.
javascript
necker
quelle
quelle
id
zuid.toString()
.getElementById("horseThumb_{$id}")
ist kein JavaScript, sondern PHP. Deshalb hat es bei Ihnen nicht funktioniert.Antworten:
Ihr Code ist korrekt. Möglicherweise besteht Ihr Problem darin, dass Sie keine ID an die
AddBorder
Funktion übergeben oder dass ein Element mit dieser ID nicht vorhanden ist. Oder Sie führen Ihre Funktion aus, bevor das betreffende Element über das DOM des Browsers zugänglich ist.Fügen Sie diese als erste Zeilen in die Funktion ein, um den ersten Fall zu identifizieren oder die Ursache für den zweiten Fall zu ermitteln:
alert('ID number: ' + id); alert('Return value of gEBI: ' + document.getElementById('horseThumb_' + id));
Dadurch werden bei jedem Aufruf der Funktion Popup-Fenster mit dem Wert von
id
und dem Rückgabewert von geöffnetdocument.getElementById
. Wenn du bekommstundefined
das Popup für die ID-Nummer erhalten, übergeben Sie kein Argument an die Funktion. Wenn die ID nicht vorhanden ist, erhalten Sie Ihre (falsche?) ID-Nummer im ersten Popup, abernull
im zweiten.Der dritte Fall würde eintreten, wenn Ihre Webseite so aussieht und versucht, ausgeführt zu werden,
AddBorder
während die Seite noch geladen wird:<head> <title>My Web Page</title> <script> function AddBorder(id) { ... } AddBorder(42); // Won't work; the page hasn't completely loaded yet! </script> </head>
Um dies zu beheben, fügen Sie den gesamten Code, der AddBorder verwendet, in einen
onload
Ereignishandler ein:// Can only have one of these per page window.onload = function() { ... AddBorder(42); ... } // Or can have any number of these on a page function doWhatever() { ... AddBorder(42); ... } if(window.addEventListener) window.addEventListener('load', doWhatever, false); else window.attachEvent('onload', doWhatever);
quelle
MJS callback error: implicit type conversion is prohibited
. Für diesen Fall ist eine explizite Typkonvertierung erforderlichIn Javascript wird der Operator "+" verwendet, um Zahlen hinzuzufügen oder Zeichenfolgen zu verketten. Wenn einer der Operanden eine Zeichenfolge "+" ist, werden sie verkettet, und wenn es sich nur um Zahlen handelt, werden sie hinzugefügt.
Beispiel:
1+2+3 == 6 "1"+2+3 == "123"
quelle
2 + "3" - 5
? (kein Betrug)4+"5"-3
?1+2+'3'+4+5 // 3345
Dies kann passieren, weil das Java-Skript manchmal Leerzeichen zulässt, wenn eine Zeichenfolge mit einer Zahl verknüpft ist. Versuchen Sie, die Leerzeichen zu entfernen, eine Zeichenfolge zu erstellen und diese dann an getElementById zu übergeben.
Beispiel:
var str = 'horseThumb_'+id; str = str.replace(/^\s+|\s+$/g,""); function AddBorder(id){ document.getElementById(str).className='hand positionLeft' }
quelle
Es ist genau wie du. Und ich gebe Ihnen einen kleinen Tipp für diese Art von dummen Dingen: Verwenden Sie einfach das Browser-URL-Feld, um die js-Syntax auszuprobieren. Schreiben
javascript:alert("test"+5)
Sie zum Beispiel Folgendes: und Sie haben Ihre Antwort. Das Problem in Ihrem Code ist wahrscheinlich, dass dieses Element in Ihrem Dokument nicht vorhanden ist. Vielleicht befindet es sich in einem Formular oder so. Sie können dies auch testen, indem Sie in die URL schreiben: umjavascript:alert(document.horseThumb_5)
zu überprüfen, wo Ihr Fehler liegt.quelle
Eine andere Möglichkeit, es mit jquery einfacher zu machen.
Stichprobe:
function add(product_id){ // the code to add the product //updating the div, here I just change the text inside the div. //You can do anything with jquery, like change style, border etc. $("#added_"+product_id).html('the product was added to list'); }
Wobei product_id die Javascript-Variable ist und $ ("# hinzugefügt _" + product_id) eine mit product_id verkettete Div-ID ist, die var from-Funktion add.
Freundliche Grüße!
quelle