Javascript document.contains无法在IE11上运行

Javascript document.contains not working on IE11

本文关键字:IE11 运行 document contains Javascript      更新时间:2023-09-26

我正在一个Business Catalyst网站(Adobe)上工作。我需要在每一行项目后面插入一个占位符div,另一个脚本稍后会将信息附加到这些项目中。这在大多数浏览器上都很好,但在IE 11上没有任何作用。

脚本在一行中查找要插入的最后一个项after,即行包含4个项,但如果最后一行只有1或2个项,则会将其插入最后一行之后。

我使用的是Jquery 1.1,但刚刚切换到1.7,似乎没有什么区别。

我的标记:

<div class="roller col-md-3" id="roller001">
<div class="roller-type">
<div class="roller-image">
{tag_small image_nolink}
</div>
<a class="roller-btn" onclick="appendRoller{tag_itemid}('{tag_itemid}')" href="javascript:void(0);">{tag_name_nolink}</a>
</div>
</div>
<div class="roller col-md-3" id="roller002">
<div class="roller-type">
<div class="roller-image">
{tag_small image_nolink}
</div>
<a class="roller-btn" onclick="appendRoller{tag_itemid}('{tag_itemid}')" href="javascript:void(0);">{tag_name_nolink}</a>
</div>
</div>

脚本:

<script type="text/javascript">
$(document).ready(function(){
var rollerItems = document.getElementsByClassName('roller');
    for (n=0; n<rollerItems.length; n++) {
        if(n%4 == 0) {
            var rowEnd = rollerItems[n];            
            if(document.contains(rollerItems[n+1])) { rowEnd = rollerItems[n+1]; }
            if(document.contains(rollerItems[n+2])) { rowEnd = rollerItems[n+2]; }
            if(document.contains(rollerItems[n+3])) { rowEnd = rollerItems[n+3]; }
            $('<div class="popup-row"></div>').insertAfter(rowEnd);
            }
        }
});
</script>

我已经意识到问题根本不在于"insertAfter"命令,而在于"document.countains"。显然IE不将"document"视为节点,我需要使用"document.body.countaines"来确定行末尾的项。

例如。

if(document.body.contents(rollerItems[n+1])){rowEnd=rollerItems[n+1];}

一行一行地浏览了所有内容,但掩盖了这一点!不确定这是否是最好的解决方案,但至少现在有效。