假设当前页面是some1.html,并且有第二页,some2.html。如何使用JavaScript从some1.html访问“some2.html”中的DOM元素?
答案 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
,$d
和doc
变量只能在回调函数中访问(因此它们只能在定义它们的函数中访问) )。
答案 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,...