如何使用Javascript从iframe编辑索引页面的innerHTML?

时间:2013-11-18 18:56:12

标签: javascript html iframe innerhtml getelementbyid

在我的索引页面中,几个不同的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')。任何建议都非常感谢。

1 个答案:

答案 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,我无法查明您的错误。