如果page2包含指定的元素,我需要更改page1的内容。如果我从同一页面获取id
,此代码非常有用if (document.getElementById("page_element")) {
var str = document.getElementById("destination").innerHTML;
var n = str.replace("Login", "Logout");
document.getElementById("destination").innerHTML = n;
}
但我需要检查第2页是否存在元素才能更改page1的内容。
我必须改变这个
if (document.getElementById("page1_element"))
正确的路径是page2(在我的情况下为logged.html)。我怎么能这样做?
答案 0 :(得分:2)
认为这样可行......
var iframe = document.getElementById("iframeId"),
doc = getFrameDocument(iframe);
doc.getElementById("page2_element_id"); // [DOM Element]
function getFrameDocument(iframe){
return iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document;
}
return cond ? a : b
表示:
if ( cond ) {
return a;
}
else {
return b;
}
答案 1 :(得分:1)
这样想。 JavaScript在浏览器中运行,例如Chrome。 Chrome可以查看当前加载的页面,但不知道服务器上仍然存在的html文件,直到它们被带入浏览器。 你可以做的是有一个包含不可见的logged.html的iFrame(可能是1x1像素,或者是一个位置偏离页面的固定位置(左:4000px)。然后你可以参考iFrame并从中获取元素在那里,这个解释了如何引用iFrame中的元素:getElementById from iframe
答案 2 :(得分:1)
我认为这可能对你有所帮助...... 不要太难我。这是我的第一篇文章:p
var element_change_content_page1 = "element_id_page1";
var page2_datatype = "html";
var filename_page2 = "logged.html";
var target_element_id_page2 = "element_id_page2";
var target_element_type_page2 = "div"
$.get( filename_page2 , function(response, status){
//You can also use jQuery " $.post() " Method instead of " $.get() "
//Source: http://www.w3schools.com/jquery/ajax_get.asp
var data = $('<div>' + response + '</div>');
var target_element = data.find( target_element_type_page2 + '#'+ target_element_id_page2 )[0]; //There "might" be more div elements with the same id: specify index
if(typeof target_element !== 'undefined'){
//Page2 contains specified element
var container = document.getElementById( element_change_content_page1 );
container.innerHTML = "Content is changed!!!";
} else {
//Page2 DOES NOT contain specified element
}
}, page2_datatype);