gpt4 book ai didi

Javascript 对象/函数在调用 DOM 时不起作用

转载 作者:行者123 更新时间:2023-11-29 22:26:09 25 4
gpt4 key购买 nike

我是初学者,所以如果有什么不明白的地方,我很抱歉:)

我正在尝试通过 ClassName 搜索 XML DOM,使用自定义函数,该函数似乎仅在我搜索脚本所在的文档时才有效。

这是函数:

Object.prototype.getElementsByClassName = function(getElementsByClass) {

function getElementsByClass(searchClass,node,tag) {

var classElements = new Array();

if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;

}

xmlhttp=new XMLHttpRequest();

xmlhttp.open("GET","somexml.xml",false);

xmlhttp.send();

xmlDoc=xmlhttp.responseXML;

var foo = xmlDoc.getElementsByClassName("gridCellAlt");

(然后我稍后在某个地方输出 foo - 输出一切正常。)

现在,如果我使用 xmlDoc.getElementsByTagName 并使用标签名称,一切正常 - 但是,我要访问的页面使用类名,所以我想使用 xmlDoc.getElementsByClassName。如果我使用 var foo = document.getElementsByClassName("gridCellAlt"); 并在运行脚本的页面中包含我正在访问的信息,那么上面的脚本完全可以正常工作,但是当我尝试在xmlDoc DOM 不起作用。总结一下:脚本唯一不起作用的时候是我同时使用 xmlDoc(而不是文档)和 getElementsbyClassName 时。如果我使用 document 和 getElementsByClassName 就好了。如果我使用 xmlDoc 并获取 elementsByTagName 没问题。

我认为 getElementsByClassName 没有在 DOM 节点内正确搜索,但即使我将 class="gridCellAlt" 放在测试 DOM 它仍然没有找到它。我尝试在 foo = xmlDoc.getElementsByClassName("gridCellAlt", (info here)) 后面添加更多信息,但这似乎也没有解决问题。

最佳答案

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
xmlDoc=xmlhttp.responseXML;
var foo = xmlDoc.getElementsByClassName("gridCellAlt");
}
}

关于Javascript 对象/函数在调用 DOM 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9196759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com