在 Jquery Ajax IE 之后访问 getElementsByName 数组

Accessing getElementsByName array after Jquery Ajax IE

本文关键字:访问 getElementsByName 数组 之后 IE Jquery Ajax      更新时间:2023-09-26

我有一个公司表格列表,表格列表中的每个公司名称旁边都有一个 [+] 按钮。当用户单击 [+] 时,javascript 函数使用 jquery ajax 获取并在单击的行下方附加一个新表行,然后将显示缩进的部门列表。

一切都很好......直到我们到达我们心爱的IE。我使用的是IE 8,而不是在以前的版本上尝试过。

单击前的表列表项 HTML:

<tr id="row1">
<td align="center">
<div id="button1" class="on" onclick="javascript:expandDepartments(1)"></div>
</td>
<td>Company 1</td>
</tr>

点击功能:

    <script>
    function expandDepartments(s_cid) {
        if ($('#button'+s_cid+'').hasClass('on')) {
            $('#button'+s_cid+'').removeClass('on').addClass('off');
            if ( document.getElementsByName('rowafter'+s_cid+'').length == 0) { //if the department list does not exist for this company (first time getting departments)
                $.ajax({
                    type: 'POST',
                    url: 'ajax/common.php',
                    dataType: 'html',
                    data: 'a=getHomePageDepartments&cid='+s_cid+'',
                    success: function(txt){
                        setTimeout(function(){
                            $('#homeCompaniesList tbody').find('#row'+s_cid+'').after(txt);
                        },1000);
                    }
                });
            }else{ //otherwise, just re-show the row again, no need to request it again
                setTimeout(function(){
                    var x = document.getElementsByName('rowafter'+s_cid+'');
                    for(var k=0;k<x.length;k++)
                        x[k].style.display = '';
                    },1000);
            }
        } else if ( $('#button'+s_cid+'').hasClass('off') ) { //hide the row when MINUS image clicked
            $('#button'+s_cid+'').removeClass('off').addClass('on');
            var x = document.getElementsByName('rowafter'+s_cid+'');
            alert(x.length);
            for(var k=0;k<x.length;k++)
                x[k].style.display = 'none';
        }
    }
</script>

包含多个部门的公司的 HTML 输出:

<tr style="display:;" name="rowafter1"><*td data not important*..
<tr style="display:;" name="rowafter1">
<tr style="display:;" name="rowafter1">
<tr style="display:;" name="rowafter1">
<tr style="display:;" name="rowafter1">

现在,看看javascript函数,行:警报(x.长度);

在火狐中,它会提醒 5在IE中,它提醒0

这告诉我,使用 jquery ajax 注入页面的 HTML 元素在 IE 中无法访问,我不知道为什么。我需要为 ie 设置 ajax 参数吗?不确定。。请协助。

呵��

IE有getElementsByName问题

或者,为什么不使用jQuery?

var x = $('*[name="rowafter'+s_cid+'"]'); //get all elements with name rowafterN
getElementsByName()

IE9

var x = $('[name="rowafter' + s_cid + '"]');
alert(x.length);