我正在创建这个创建元素的JS函数 该函数采用两个参数strName和objAttributes
function createElement( strName, objAttributes )
{
var elem = document.createElement(strName);
for ( var i in objAttributes )
elem.setAttribute(i, objAttributes[i]);
return elem;
}
这在Fx中工作正常,但在MSIE中不行 我知道setAttibute方法是错误的,建议的解决方法是
elem.attr = 'val';
但是现在我不知道如何在我的循环中写这个。
我已经尝试了elem.style和elem ['style'],但它们都没有效果。
任何人都可以给我一些建议,
提前致谢
吨
答案 0 :(得分:5)
使用elem[i]
。
function createElement( strName, objAttributes )
{
var elem = document.createElement(strName);
for ( var i in objAttributes )
elem[i] = objAttributes[i];
return elem;
}
答案 1 :(得分:1)
您不能只交换设置属性和setAttribute。
您必须小心设置元素的属性而不是使用setAttribute。 需要仔细编写样式属性和事件处理程序,并且那些曾经在html(禁用,多个,只读)中最小化的属性具有特定于浏览器的有效值。
另外,如果你设置了element.class =“mynewclass”,你会收到一个错误,因为class是一个保留的javascript词,尽管在setAttribute赋值中将它用作字符串是完全安全的。属性名称为“.className”,标签的“for”属性的正确名称为“htmlFor”。
答案 2 :(得分:1)
让jQuery处理跨浏览器的废话......
$(elem).attr(i, objAttributes[i]);