项目中用到的,clone一段输入框然后修改name在添加到另外一块区域中。
但是测试到IE,杯具了–clone后不支持修改input的name。
例如:
$(input).attr(‘name’,'newName’);
在ie里使用F12的工具查看,input的属性里多出了一个submitName。原来name的属性木有变化。
股沟了下,微软说:
The NAME attribute cannot be set at run time on elements dynamically created with the createElement method.
To create an element with a name attribute, include the attribute and value when using the createElement method.
意思就是运行时,不能修改动态创建元素的Name属性,想修改?去重新创建个吧。。。
使用Jquery的话就可以新建HTML代码然后AppendTo到父元素。
但是,有些情况可能就不太适应,比如我这项目,某些input有些自建属性是动态的。手写HTML去加入到父元素的话,位置又可能不太好控制。
想了半天终于想出个解决方案,可能不太完美,但是也解决了项目中遇到的问题:
使用outerHTML属性,获得元素的html代码,然后replace要name的值。这样clone之后的元素的代码也能按照想象的去实现修改了。
例如:input.outerHTML=input.outerHTML.replace(‘name’,'newName’);
但是outerHTML属性,IE,Chrome都支持,Firefox不支持,所以需要判断下浏览器,如果是IE就放心使用吧,反正人家都烂成这样了。其他的,还是照常用jquery实现吧。。
BTW:顺便分享个Web标准,浏览器兼容性问题速查网站W3help.org
最后再次诅咒下坑爹的IE。
if($.broswer.msie){
GoHell();
}