SCRIPT1014:无效字符 - 引用符号

时间:2016-05-19 19:25:44

标签: javascript internet-explorer invalid-characters

我有这个问题:

array [i] .idAuthor是一个String变量。我想将此String传递给一个在append-String中调用的函数。

除了Internet Explorer之外,代码在Chrome和Firefox中运行良好。 IE给了我这个错误:SCRIPT1014:无效字符

我认为问题是`-Quotes

我希望以下示例有助于表达我的问题。

<script>
(...)
    $("#id").append("<div onClick='myFunc(`" + array[i].idAuthor + "`);'>" + i + "</div>");
(...)
<script>

还有另一种方法可以处理我的情况或用另一个与IE兼容的字符替换`-Quotes吗?

3 个答案:

答案 0 :(得分:10)

看起来你正在将反引号(`)放入你的字符串中。

onClick='myFunc(`" + ... + "`);'>

在现代浏览器中,反引号用于template literals. IE11不支持模板文字。

相反,请尝试转义引号:

onClick='myFunc(\"" + array[i].idAuthor + "\");'>

答案 1 :(得分:2)

您应该使用普通引号,但要对它们进行转义,以便将它们解析为字符串的一部分:

$("#id").append("<div onClick='myFunc(\"" + array[i].idAuthor + "\");'>" + i + "</div>");
//------------------------------------^^   ----------------------^^

答案 2 :(得分:1)

//create element using jquery
var elm = $('<div>');

//put ID as custom attribute
elm.attr('data-author-id', array[i].idAuthor);

//put some html content for new element
elm.html(i);

// catch click on it
elm.click(function(){
    // call external function and pass your custom tag attribute as value
    myFunc( $(this).attr('data-author-id') );
});

    $("#id").append(elm);

这样的事情应该有效。

更多镜头方式:

$("#id").append($('<div>')
.attr('data-author-id', array[i].idAuthor)
.html(i)
.click(function(){
    // call external function and pass your custom tag attribute as value
    myFunc( $(this).attr('data-author-id') );
}));

jQuery有很多功能控制标签属性,事件,价值和很多有用的东西。