如何从当前的HTML访问其他html的dom元素

时间:2014-01-10 13:54:29

标签: javascript html ajax dom xmlhttprequest

假设当前页面是some1.html,并且有第二页,some2.html。如何使用JavaScript从some1.html访问“some2.html”中的DOM元素?

3 个答案:

答案 0 :(得分:2)

你可以这样做的方法是使用AJAX:

$.get(url, function(data) {
    var $doc = $(data);
});

您可以使用它来从网址获取内容,并使用它执行某些操作。

响应您的编辑:您只需执行$doc.find('selector')而不是通常的jQuery $('selector')即可访问DOM元素。

您还可以通过以下方式让它变得更容易:

$.get(url, function(data) {
    var $doc = $(data);
    var $d = $doc.find;
});

在这种情况下,您只需使用语法$d('selector')


如果没有安装jQuery,你的方法是:

var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'document';
xhr.send();
xhr.onload = function(e) {  
    var doc = e.target.responseXML;
}

然后您可以通过doc.getElementById('id')访问DOM元素,就像您通常选择元素一样,但使用doc代替document

注意:对于这些函数,$doc$ddoc变量只能在回调函数中访问(因此它们只能在定义它们的函数中访问) )。

答案 1 :(得分:1)

你做不到。

您的代码显示正在同一窗口中加载新页面。

在创建page2的环境之前,page1的JavaScript环境将消失。由于它们不存在于同一时间,因此您无法访问另一个的DOM。

您可以做的是将一些数据存储在localstorage或cookie中,并让您在第2页中放置的代码查找该数据并根据其所说的内容运行JS。

答案 2 :(得分:-2)

您可以尝试使用Ajaxh,因为正如Quentin所说,更改window.location.href将加载chaned文件。或者像这样使用iframe:

var frame= document.createElement('iframe');
frame.setAttribute('src', 'some2.html');
frame.setAttribute('name', 'some2');
frame.appendTo(body);
var some2 = document.frames['name'];
//now you can acces to some2 with getElementById,...