IE兼容性问题

 <TD><BUTTON CLASS="thin-button image-button" TITLE="Copy" STYLE="width:20px" ONCLICK="duplicateRow(2, this.parentElement.parentElement); event.cancelBubble=true">C</BUTTON></TD>
var test;
function duplicateRow(index, row) {
    test = row;
    /* console.log("row:",row); */
    var newRow = insertRow(index, row.rowIndex + 1, row);
    newRow.cells[1].children[0].focus();//m1 ()->[]
}

在点击了按钮之后回传递row 到duplicateRow,并且将row赋值到test,让我们看看一下在IE11和IE5之间打印test有什么不同:

IE11:

        

"<input name="c1PriceList" class="inactive" style="width: 30px;" οnkeydοwn="handleKeyDown(event)" οnfοcus="setActiveCell(this)" maxlength="3" handlekey="uppercase">"

IE5:

"<INPUT οnfοcus=setActiveCell(this) class=inactive οnkeydοwn=handleKeyDown(event) style="WIDTH: 30px" maxLength=3 value=STA name=c1PriceList HANDLEKEY="uppercase">"

查阅一番资料,

  • IE5: 在旧版的浏览器如 IE5 中,innerHTML 获取元素的内容时,会返回一个原始的 HTML 字符串。这意味着,如果一个 <input> 元素包含了属性(如 valueonfocusonkeydown 等),这些属性会被完整地包括在 innerHTML 返回的字符串中。这样,innerHTML 结果中会包括 <input> 元素的所有属性,甚至包括 value

  • IE11: IE11 在解析 innerHTML 时,会对属性做一些自动处理。例如,在 IE11 中,value 属性可能被省略,尤其是当它包含默认值时。对于表单元素如 <input>,如果 value 属性没有显式地设置或修改,它可能不会出现在 innerHTML 中。为了兼容现代 Web 标准,IE11 可能会忽略一些默认值属性,或者做一些优化和清理,从而导致 innerHTML 中的 <input> 标签没有 value 属性。

若是要想IE11像IE5一样获取到input框的value值,则应该:

/ 获取第二个单元格中的input元素
  var inputElement = test.cells[1].children[0];
  
  // 获取input的value
  var value = inputElement.value;
  
  // 输出值
  console.log("Input value: ", value);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值