2013-03-30 7 views
8

ich folgendes haben Javascript:Fehler: Syntaxerror: DOM Exception 12 auf Tag Creation Mit jQuery

var orderItemQuantity = $('<input/>', { 
    type: 'hidden', 
    name: 'order_detail[][quantity]', 
    value: itemQuantity 
}); 

Die oben Javascript wirft die folgende Fehlermeldung:

Error: SyntaxError: DOM Exception 12 

Dieser funktioniert ohne Fehler:

var newListItem = $('<li/>', { 
    html: 
    $('#item_name_'+itemId).text() + 
    '(' + $('#item_quantity_' + itemId).val() +')' + 
    '<a onclick="removeItem(' + itemId + ')">Delete this</a>' + 
    '<input type="hidden" name="order_detail[][item_id]" value="' + itemId + '"/>', 
    id: itemId 
}); 

überprüfte ich die folgenden question aber die Antwort nicht angeben, c learly den richtigen Grund, warum.

Hier ist meine DTD:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

Frage: Warum $('<input/>') und $('<input>') die genannte Ausnahme werfen, während $('<li/>') kein Problem ist?

Antwort

9

Stellen Sie sicher, dass jQuery in Ihrem ersten Beispiel geladen ist.

Auch wenn Sie jQuery nicht geladen haben, wird die Funktion $() jetzt von Google Chrome als etwas ähnlich wie querySelectorAll() definiert.

Diese Funktion akzeptiert nur einen CSS-Selektor als Parameter und nicht beliebiges HTML wie jQuerys $().

Aus der Dokumentation:

SYNTAX_ERR code 12 In invalid or illegal string has been specified; for example setting the selectorText property of a CSSStyleRule with an invalid CSS value.

Die Funktion gibt einen CSS-Selektor erwartet, und ihr habt es HTML, so dass es einen Syntaxfehler gab.

diese Geige sehen, es funktioniert gut:

http://jsfiddle.net/S6d6w/