<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>
元素包含了属性(如value
、onfocus
、onkeydown
等),这些属性会被完整地包括在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);