我做过的console.log一个变量,在IE中它与IE不遍历的HTMLCollection正确
<HtmlCollection length="8">
<input name="Date_Visit" class="Visitor wmp-calendar hasDatepicker" id="rn_Date_Visit_Visitor_23" required="" type="text"></input>
<input name="Time_Arrival" class="Visitor" id="rn_Time_Arrival_Visitor_23" required="" type="text" maxlength="50"></input>
<textarea name="Visitor_Names" class="Visitor" id="rn_Visitor_Names_Visitor_23" rows="5"></textarea>
<input name="Visitor_Organisation" class="Visitor" id="rn_Visitor_Organisation_Visitor_23" required="" type="text"></input>
<input name="Host_Name" class="Visitor" id="rn_Host_Name_Visitor_23" required="" type="text" maxlength="50"></input>
<input name="Host_Collar" class="Visitor" id="rn_Host_Collar_Visitor_23" required="" type="text" maxlength="50"></input>
<input name="Host_Contact" class="Visitor" id="rn_Host_Contact_Visitor_23" required="" type="text" maxlength="50"></input>
<input name="Floor_Meeting" class="Visitor" id="rn_Floor_Meeting_Visitor_23" type="text" maxlength="50"></input>
</HtmlCollection>
</HtmlCollection>
这回来是我用来放上述
var elements = mainDiv.children[i].getElementsByClassName('Visitor');
console.log(elements);
与Chrome相似(但更详细)
因此,下面的代码在Chrome中工作,但在IE中失败。在IE中它显示的是第二个console.log中的名称和一些随机的东西,如“length”,“item”和“namedItem”。 IE11不显示所有的属性名称,只是第一个。
for (var k in elements) {
console.log("validateForm 5");
console.log(" > k: " + k);
console.log(" > k.search(rn): " + k.search("rn_"));
if (k.search("rn_") > -1){
console.log("validateForm 6");
var temp = k.split("_");
var key = temp[1]+"_"+temp[2];
var value = elements[k].value;
VisitorData[x] = key+"|"+elements[k].value;//.getAttribute("value");
x++;
}
}
有什么建议吗?因此,例如https://jsfiddle.net/6f0L9ye8/1/在Chrom中工作正常,它带回了所有内容(包括HERE,WE和GO),但IE11不支持
什么是'元素'? –
对不起 - 应该说。这是我的HTML集合 - 已编辑问题 – pee2pee
几个答案[*为 - 在JavaScript中的每个数组上* *](http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript )解决了如何通过像这样的类似*数组的结构来正确循环。重复? –