Javascript parentNode或previousElementSibling在IE8中不工作

Javascript parentNode或previousElementSibling在IE8中不工作,javascript,internet-explorer-8,Javascript,Internet Explorer 8,我有一些javascript,parentNode或PrevivouseElementSibling似乎正在突破IE8。该代码在firefox和IE9中运行良好。这是一条没有得到实施的路线: $(submitter.parentNode.parentNode.previousElementSibling).children('#mark_as_broken').show(); 代码类似于 <form><div><input id=mark_as_broken>

我有一些javascript,parentNode或PrevivouseElementSibling似乎正在突破IE8。该代码在firefox和IE9中运行良好。这是一条没有得到实施的路线:

$(submitter.parentNode.parentNode.previousElementSibling).children('#mark_as_broken').show();
代码类似于

<form><div><input id=mark_as_broken></input></div></form>
<form><div><input id=mark_as_fixed></input></div></form>

其中标记为固定输入的是提交者。这适用于其他浏览器


任何关于哪一部分不起作用的想法,以及为什么?

以前的ElementSibling
在IE9之前不受支持

这里有一个应该可以工作的函数。我还没有测试过。似乎有效

var previousElementSibling = function( el ) {
    if( el.previousElementSibling ) {
        return el.previousElementSibling;
    } else {
        while( el = el.previousSibling ) {
            if( el.nodeType === 1 ) return el;
        }
    }
}

$( previousElementSibling(submitter.parentNode.parentNode) )

编辑:

您没有提到jQuery,但您似乎正在使用它的API。如果是这样,您可以这样做:

$(submitter).closest('form').prev().find('#mark_as_broken').show();

根据您的标记,似乎应该使用
.find()
而不是
.children()

标记是什么样子的?“提交者”指的是什么?你能解释一下这个函数吗?它似乎是递归的,尽管我在这方面很挑剔javascript@tiswas:如果该属性受支持,则它仅使用该属性。如果不是,那么只要有一个
以前的同级
,它就会用它覆盖
el
,然后测试它是否是类型1元素,如果是,它就会返回它。如果它到达了一个根本没有
previousSibling
的点,则
while
循环中断,默认情况下返回
undefined