Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在IE怪癖模式下按类选择元素_Javascript_Html_Bookmarklet - Fatal编程技术网

Javascript 在IE怪癖模式下按类选择元素

Javascript 在IE怪癖模式下按类选择元素,javascript,html,bookmarklet,Javascript,Html,Bookmarklet,我正在尝试为一个在IE中以怪癖模式呈现的页面创建一个bookmarklet。我无法控制页面的来源,因此告诉我更改doctype将不起作用 无论如何,我试图通过元素的类来获取元素,但getElementsByClassName和querySelectorAll似乎在怪癖模式下不起作用。除了遍历dom之外,还有其他方法可以完成此任务吗?您可以为无法执行querySelector的浏览器制作一个实用程序- 请注意,此示例返回一个数组,而不是节点列表 function classReunion(clas

我正在尝试为一个在IE中以怪癖模式呈现的页面创建一个bookmarklet。我无法控制页面的来源,因此告诉我更改doctype将不起作用


无论如何,我试图通过元素的类来获取元素,但getElementsByClassName和querySelectorAll似乎在怪癖模式下不起作用。除了遍历dom之外,还有其他方法可以完成此任务吗?

您可以为无法执行querySelector的浏览器制作一个实用程序- 请注意,此示例返回一个数组,而不是节点列表

function classReunion(classname, tag, parent){
    var A= [], elements, L, who,
    rx= RegExp(/'\\b'+classname+'\\b');
    tag= tag || '*';
    parent= parent || document;
    elements= parent.getElementsByTagName(tag);
    L= elements.length;
    while(L){
        who= elements[--L];
        if(rx.test(who.className)) A.push(who);
    }
    return A;
}

旧的浏览器确实依赖于“遍历”dom来按类收集元素组。

您可以为不能执行querySelector的浏览器创建一个实用程序- 请注意,此示例返回一个数组,而不是节点列表

function classReunion(classname, tag, parent){
    var A= [], elements, L, who,
    rx= RegExp(/'\\b'+classname+'\\b');
    tag= tag || '*';
    parent= parent || document;
    elements= parent.getElementsByTagName(tag);
    L= elements.length;
    while(L){
        who= elements[--L];
        if(rx.test(who.className)) A.push(who);
    }
    return A;
}

旧浏览器确实依靠“遍历”dom来按类收集元素组。

polyfill:你的意思是
getElementsByClassName
?@epascarello:这个polyfill不是也遍历dom吗?@GitaarLAB如果queryselector和本机方法不可用,所有解决方案都将遍历dom。@epascarello:我同意。最终唯一正确的答案是“不”,因为提问者会问:“除了在dom中行走,还有其他方法可以完成这项任务吗?”另一方面,我有时还是会感到惊讶(是什么让我如此伟大).polyfill:你的意思是
GetElementsByCassName
?@epascarello:这个polyfill不是也可以遍历DOM吗?@GitaarLAB如果queryselector和本机方法不可用,所有解决方案都可以遍历DOM。@epascarello:我同意。最终,唯一正确的答案是“不”,因为提问者会问:“除了在dom中行走,还有其他方法可以完成这项任务吗?”另一方面,我有时还是会感到惊讶(是什么让我如此伟大)。这是我见过的最好的版本。你是我第一个看到像我一样使用大写字母L(带修改的)反向while循环迭代器的人。再次感谢你,我的选票多得不能再多了!这是我见过的最好的版本。你是我第一个看到像我一样使用大写字母L(带修改的)反向while循环迭代器的人。再次感谢你,我的选票多得不能再多了!