js的setAttribute为什么不起作用?
以下这段代码是替换表单中INPUT,textarea,select的值为span,在一个页面用的好好的,为什么换了个页面就不行?查了后问题在obj.setAttribut...
以下这段代码是替换表单中INPUT,textarea,select的值为span,在一个页面用的好好的,为什么换了个页面就不行?查了后问题在obj.setAttribute("innerHTML", elements[i].value);改为obj.innerHTML= elements[i].value;就行了,我就奇怪怎么会这样,请高手指点
function RemoveControl(elements) {
var arrObj = new Array();
var count = elements.length;
for (var i = 0; i < count; i++) {
if (elements[i] == undefined)
continue;
var obj = document.createElement('span');
obj.style.width = elements[i].style.width;
obj.style.textAlign = elements[i].style.textAlign;
switch (elements[i].type) {
case "text":
obj.setAttribute("innerHTML", elements[i].value);
break;
case "textarea":
obj.setAttribute("innerHTML", elements[i].innerHTML);
elements[i].innerHTML = '';
break;
case "select-one":
obj.setAttribute("innerHTML", elements[i].options[elements[i].selectedIndex].text);
elements[i].options.length = 0;
break;
}
elements[i].parentNode.insertBefore(obj, elements[i]);
arrObj[arrObj.length] = elements[i];
}
//删除表单原控件
for (var i = 0; i < arrObj.length; i++) {
arrObj[i].removeNode();
}
} 展开
function RemoveControl(elements) {
var arrObj = new Array();
var count = elements.length;
for (var i = 0; i < count; i++) {
if (elements[i] == undefined)
continue;
var obj = document.createElement('span');
obj.style.width = elements[i].style.width;
obj.style.textAlign = elements[i].style.textAlign;
switch (elements[i].type) {
case "text":
obj.setAttribute("innerHTML", elements[i].value);
break;
case "textarea":
obj.setAttribute("innerHTML", elements[i].innerHTML);
elements[i].innerHTML = '';
break;
case "select-one":
obj.setAttribute("innerHTML", elements[i].options[elements[i].selectedIndex].text);
elements[i].options.length = 0;
break;
}
elements[i].parentNode.insertBefore(obj, elements[i]);
arrObj[arrObj.length] = elements[i];
}
//删除表单原控件
for (var i = 0; i < arrObj.length; i++) {
arrObj[i].removeNode();
}
} 展开
2012-02-16
展开全部
setAttribute是设置网页元素的属性,就是在标签里内如<img />标签的src属性。innerHTML不是属性
只是JS里内代表一个双标记中间的文本如:<span> </span>中间的字符。innerHTML属性所以只会原样输出。
只是JS里内代表一个双标记中间的文本如:<span> </span>中间的字符。innerHTML属性所以只会原样输出。
追问
同一台电脑啊,都是IE8,为什么会有两个不同的结果呢
追答
span不能这样写吧 它没innerHTML属性设置了也没用啊
你以前使用文本框接收吗?文本框可以用setAttribute("value", elements[i].value);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
注意setAttribute("属性名",值)和dom节点.属性名=值这两种方式的区别:
1、前者是自定义属性,是在attributes下的,dom节点无法直接访问
2、后者是dom的属性,是直接在dom节点可访问的。
对于innerHTML要小心使用,是非标准属性,特别在ie中,像table,tr等innerHTML都只只读属性,不能修改。
1、前者是自定义属性,是在attributes下的,dom节点无法直接访问
2、后者是dom的属性,是直接在dom节点可访问的。
对于innerHTML要小心使用,是非标准属性,特别在ie中,像table,tr等innerHTML都只只读属性,不能修改。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询