我有一个函数,它根据参数
创建元素和设置属性function createInfo( x , obj , text ){
var element = document.createElement(x);
if( obj ){
var obj_child = Object.keys(obj);
for( var i = 0; i < obj_child.length; i++){
element.setAttribute(obj_child[i], obj[obj_child[i]]);
}
}
if( text )
element.innerHTML = text;
return element;
}
它工作正常,但问题是当我传递“data-attribute”作为参数时, e.g
var div =createInfo("div",{class:"left_info",data-index:index},null)
它抛出
意外的令牌 -
为什么不在密钥的名称中使用-
?这有什么不对吗?
答案 0 :(得分:3)
data-index
对于JavaScript解析器看起来像“data
减去index
”,并且在那里没有意义。如果你想将它用作属性名称,请将其放在引号中,这就是告诉JavaScript它只是属性名称的方式:
var div =createInfo("div",{class:"left_info","data-index":index},null)
// ------------------------------------------^----------^
某些旧版浏览器可能还需要您将class
放在引号中,原因完全不同:class
是一个关键字。 (但现代版很好,因为它没有引号,JavaScript标准在2009年更新,以了解它不是那里的关键字。)
var div =createInfo("div",{"class":"left_info","data-index":index},null)
答案 1 :(得分:1)
尝试像这样定义对象:
var div =createInfo("div",{"class":"left_info","data-index":index},null)