FF Chrome IE11 innerHTML参数无法获取到value的值.

本次老系统添加兼容性改造碰到的一个问题. 老系统中单击某一行时通过obj.innerHTML获取数据.用IE11一直无法获取动态赋的value值,连手动填入的也无法获取. 神奇了.

IE8下的效果:

[img]http://dl2.iteye.com/upload/attachment/0115/7028/e75bed89-18a1-396a-97c5-6eb166de62fd.png[/img]

IE11下的效果(不开兼容性)

[img]http://dl2.iteye.com/upload/attachment/0115/7030/f8a8927a-7e40-332e-93fe-b3b65ffba592.png[/img]


查了半天的谷歌终于找到了一个办法.
1.先引入jquery.
2.添加代码

(function($) {
var oldHTML = $.fn.html;
$.fn.formhtml =function() {
if (arguments.length) return oldHTML.apply(this,arguments);
$("input,textarea,button", this).each(function() {
this.setAttribute('value',this.value);
});
$(":radio,:checkbox", this).each(function() {
if (this.checked) this.setAttribute('checked', 'checked');
elsethis.removeAttribute('checked');
});
$("option", this).each(function() {
if (this.selected) this.setAttribute('selected', 'selected');
elsethis.removeAttribute('selected');
});
return oldHTML.apply(this);
};
})(jQuery);

function getHTML(obj){
return $(obj).formhtml();
}
function tr_click(obj){
var _html0 = getHTML(obj);
alert(_html0);
}




总结:页面中输入的那个value,对DOM元素来说是个property,是不属于innerHTML里的IE8以下版本会出现,是因为IE不分attribute和property,这是IE的BUG,在IE9的时候终于得以修复而这个formHtml这个函数,强行给input元素加了一个叫value的attribute,从概念上说和dom的值value是不一样的,概念不同,不管怎么样,问题能解决就ok,不管是神马猫,能抓老鼠的猫就好好猫!

感谢 http://www.cnblogs.com/zhaozi/archive/2012/03/24/2415290.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值