2012-03-29 19 views
2

Wenn ich einen String-Wert in einen Onclick setzen, gibt die Konsole 'Uncaught SyntaxError: Unexpected token ILLEGAL' zurück? Es funktioniert gut, wenn es nur eine Nummer ist, aber nicht, wenn es eine Zeichenfolge ist!onclick Passing Zahlen und Strings

Code:

document.getElementById("productMenu").innerHTML += "<div class=\"leftMenuItems\" onclick=\"javascript:showResources(" + p_codes + ");\">" + p_codes + " - " + p_names + "</div>"; 

<div class="leftMenuItems" onclick="javascript:showResources(1234ABC);">Product Name</div> 

Antwort

2

Sie fehlen Zitate

onclick="javascript:showResources('1234ABC');" 

weil 1234ABC ein String ist, während Zahlen keine Anführungszeichen benötigen

+0

Doh! Manchmal ist das Offensichtliche einfach nicht offensichtlich! arbeite jetzt! Vielen Dank –

1

Das Problem ist, dass, wenn Sie dies nicht tun Umbrechen Sie das Argument in Anführungszeichen, JavaScript sucht nach einer Variablen mit demselben Namen. Da Variablennamen nicht mit Zahlenliteralen beginnen können, erhalten Sie den Fehler. Zahlen allein werden als ganze Zahlen übergeben.

<div class="leftMenuItems" onclick="javascript:showResources('1234ABC');">Product Name</div> 
+0

Danke für die ausführlichere Erklärung, eines Tages werde ich bei all dem besser werden ... Eines Tages! –

1

das Versuchen, es funktionierte für mich:

Sie folgendes verwenden sollten.

Pass Zeichenfolge innerhalb des Zitats in der folgenden string.format: HttpUtility.HtmlEncode("'"+personnelPhotoList[j].name.Trim()+"'")

Codebeispiel:

StringBuilder strPhotos = new StringBuilder(); 

strPhotos.Append(String.Format("<div class=\"div_employee_img\"> 
     <a href=\"#\" onclick=\"DeletePhoto({0}); return true;\"></a></div>, 
     HttpUtility.HtmlEncode("'"+personnelPhotoList[j].name.Trim()+"'"))); 
0

Irgendwie ist es nicht vollständigen Code schreiben hat, hier ist es wieder

strPhotos.Append(String.Format("<input type=\"button\" onclick = \"Delete({0}) return false;\", HttpUtility.HtmlEncode("'"+personnelPhotoList[j].name.Trim()+"'")));

Verwandte Themen