在我的索引页面中,几个不同的div是一个id ='myframe'的iframe,iframe有一个src = order.html,该页面有一堆不同的单选按钮和带有与之关联的值的复选框。
我目前遇到了写一个javascript函数的墙,在这个网站的索引页面上编辑div(id ='purchase')来显示当前的订单/购买。
function addAlbum(boxElement){
var iframe = document.getElementById('myframe');
var s = iframe.contentWindow.document.getElementById('purchase').innerHTML;
i = boxElement.value.indexOf("|");
clean_string = boxElement.value.substring(0,i);
//price = parseInt(boxElement.value.substring(i +1, boxElement.value.length));
replaceString = "";
if(boxElement.checked){
s += '<div class="one_record">';
s += clean_string;
s += '</div>';
}
else{
replaceString = '<div class="one_record">';
replaceString += clean_string;
replaceString += '</div>';
s.replace(replaceString, "");
}
}
当我运行我的函数时,我得到一个错误说:“无法读取属性'contentWindow'of null”意味着它无法找到我的iframe(id ='myframe')。任何建议都非常感谢。
答案 0 :(得分:0)
过去我发现,当您使用 document.getElementById()
通过ID捕获iframe时,您无法编辑iframe的内容,您需要通过window.frames
ie {{ 1}}
您应该可以像这样访问IFrame的文档(或多或少都有):
window.frames.iFrameName.document.body.innerHTML
在纠正了我对这个问题的无知之后,我仔细研究了你的代码所拥有的东西,没有什么能真正脱颖而出。事实上,起初我有问题复制问题,因为你的代码实际上对我有用。通常这意味着iFrame尚未加载。
所以我试过了,我得到的唯一错误是iFrame元素var frame = document.getElementById('frame');
frame.onload = function() {
var frameDoc = frame.contentDocument ? frame.contentDocument : frame.contentWindow.document;
frameDoc.body.innerHTML += '<br />Appended from the parent Page';
}
的innerHTML为NULL,而不是getElementById('purchase')
。
然后它击中了我,你在DOM中存在iframe之前调用函数contentWindow
。有了这个HTML,我在IE中得到了完全相同的错误:
addAlbum(boxElement)
请注意脚本和iframe都在正文中,而iframe在脚本下面。我愿意打赌你有一个模拟情况,因为没有其他因素导致这样一个明显的错误。不幸的是,如果没有看到您的HTML,我无法查明您的错误。