起因是在模態框showModalDialog獲取父級document后再獲取元素時發現拿到的是null,原因是該頁面被作為iframe嵌套在另外的頁面里了。此時在模態框下通過window.parent.document獲取的是最外層頁面的document,可以通過以下代碼遞歸遍歷所有嵌套的iframe來獲取dom元素:
$(function() {
listIframe(window.parent.document);
});
function listIframe(doc) {
//需判斷傳入document是否為空
if(doc) {
//獲取該document下的目標元素,存在的話再執行方法
var p2divs = doc.getElementsByName("P2");
if(p2divs && p2divs.length>0){
p2divs[0].click();
}
var iframeTemp = doc.getElementsByTagName("iframe");
if(iframeTemp && iframeTemp.length>0){
for(var k=0; k<iframeTemp.length; k++){
var iframeDoc = iframeTemp[k].contentDocument;
listIframe(iframeDoc);
}
}
}
}
如果不想粗暴的遍歷所有iframe獲取所有document來得到元素的話可以加條件判斷是否自己目標iframe的id。
附:獲取目標div下的所有input標簽DOM,此時返回的是數組,需遍歷或通過下標取值。document.getElementById("targetDiv").getElementsByTagName('INPUT')