私は変数にはconsole.logを行っていないとIEでそれがこれは私が IEがHtmlCollectionをループが正しく
var elements = mainDiv.children[i].getElementsByClassName('Visitor');
console.log(elements);
上記を置くために使用したものである
<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>
に戻ってきましたChromeと同様(詳細はこちら)
このコードはChromeで動作しますが、IEでは失敗します。 IEで表示されるのは、名前と、2番目の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でうまく動作しますが、ここではすべてを返しますが、IE11は含まれません。
「要素」とは何ですか? –
申し訳ありません。それは私のHTMLコレクションです - 編集された質問 – pee2pee
[* JavaScriptの配列には?*]に対するいくつかの答え(http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript )は、このような配列のような*構造を正しくループする方法を扱います。重複していますか? –