Error: SyntaxError: DOM Exception 12 on Tag Creation Using jQuery

北慕城南 提交于 2019-12-22 03:48:30

问题


I have the following javascript:

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

The above javascript throws the following error message:

Error: SyntaxError: DOM Exception 12

This one works without error:

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
});

I checked the following question but the answer did not specify clearly the correct reason WHY.

Here is my DTD:

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

Question: Why does $('<input/>') and $('<input>') throw the said exception while $('<li/>') is not a problem?


回答1:


Make sure you have jQuery loaded in your first example.

Even if you don't have jQuery loaded, the function $() is now defined by Google Chrome as something similar to querySelectorAll().

This function only accepts a CSS selector as parameter and not arbitrary HTML like jQuery's $().

From the docs:

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.

The function is expecting a CSS selector and you gave it HTML so it gave a syntax error.

See this fiddle, it works just fine:

http://jsfiddle.net/S6d6w/



来源:https://stackoverflow.com/questions/15714601/error-syntaxerror-dom-exception-12-on-tag-creation-using-jquery

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!