Javascript JSON到setAttribute()
我几乎已经完成了以下工作,但遇到了许多令人困惑的方法。我们希望使用attr{}中的key:value作为setAttribute()方法属性,而不使用框架 请提供一个简单的解决方案:Javascript JSON到setAttribute(),javascript,json,Javascript,Json,我几乎已经完成了以下工作,但遇到了许多令人困惑的方法。我们希望使用attr{}中的key:value作为setAttribute()方法属性,而不使用框架 请提供一个简单的解决方案: testDiv = document.getElementById("testDiv"); attr = { align:"center", title:"The Test Div" }; //Possible converting JSON to String, the use in s
testDiv = document.getElementById("testDiv");
attr = {
align:"center",
title:"The Test Div"
};
//Possible converting JSON to String, the use in setAttribute?
for(var x in attr) alert(x + " , " + attr[ x ] );
testDiv.setAttribute( x , attr[ x ]);
这里没有JSON,而是一个对象文本。无论如何,如果我理解正确,您想为一个特定元素设置所有指定属性吗?如果您想要一些可重用的东西,函数中的循环应该很容易做到:
function setMultipleAttributes(el, attributes) {
for (var attr in attributes)
el.setAttribute(attr, attributes[attr]);
}
var testDiv = document.getElementById("testDiv");
setMultipleAttributes(testDiv, { align : "center", title : "The Test Div" });
您的问题与“JSON”(实际上只是一个JavaScript对象文本)或设置属性无关。是这样的:
for(var x in attr) alert(x + " , " + attr[ x ] );
testDiv.setAttribute( x , attr[ x ]);
由于在for
循环中不使用大括号,因此只执行紧跟其后的语句。如果我添加大括号,上面的代码如下所示:
for(var x in attr){
alert(x + " , " + attr[x] );
}
testDiv.setAttribute( x , attr[x]);
setAttribute
不在循环中调用-它只在末尾调用一次。相反,你可能想要
for(var x in attr){
alert(x + " , " + attr[x] );
testDiv.setAttribute( x , attr[x]);
}
有什么问题吗<代码>用于(attr中的var x)testDiv.setAttribute(x,attr[x])代码>应该可以正常工作。当然,对于非字符串属性,IE中的
setAttribute
本身存在问题;您可能需要考虑使用属性来代替。对于(attr中的var x)testDiv[x]=attr[x],这仍然只是代码>不过。你到底想完成什么?如果您只是希望将属性映射到HTML节点,那么您的方法可以正常工作。但是请注意,您需要在for循环中的块周围使用大括号,否则它将不会执行循环中的第二条语句。用法:for(attr中的var x){alert(x+”,“+attr[x]);testDiv.setAttribute(x,attr[x]);}
找到了IE风格的变通方法:感谢所有的解决方案和术语说明。在尝试使用setMultipleAttributes()方法扩展Element.prototype之前,我是否应该注意IE的任何怪癖,DOM的任何扩展都应该包括自定义DTD吗?