获取ONE属性的所有实例而不是一个

时间:2012-11-05 11:06:57

标签: javascript jquery

所以我根据复选框的选择显示图表并遇到了一个小问题。

我正在循环并仅选择第一个图表,即使选中了全选复选框 - 这意味着我会得到相同数量的第一个图形而不是十个唯一图形。

正如您将在下面的代码中看到的那样,我使用的上一行已被注释掉:

//var fnInstance=$('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].attributes[1].value;

在Firefox中完美运行 - 它会显示所有图表正确等但由于尝试访问元素的方式而无法在Chrome / IE中使用。

我用这两行代替了它:

$el = $('#counterTreeviewUL'+idTreeview).first();
var fnInstance = $el.find("input").attr("onclick");

我替换它的两行使得所有三个浏览器都能正常运行(IE或Chrome中没有错误),然而唯一显示的图形是第一个找到的图形 - 如果选择了三个元素,则将显示第一个图形的3个版本,而不是3个唯一的版本。

完整代码如下,并且元素包含的console.logs位于以下位置:

for (var i=0;i<$('#counterTreeviewUL'+idTreeview)[0].children.length;i++)
{

 if (!$('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].checked)
 {  
        $('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].checked=true;


//var fnInstance=$('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].attributes[1].value;

        $el = $('#counterTreeviewUL'+idTreeview).first();
        var fnInstance = $el.find("input").attr("onclick");


        fnInstance=fnInstance.substr(15).substr(0,fnInstance.length-2);

        var flagsInstance=fnInstance.split(new RegExp(","));

        var graph = {
                id: seqId,
                entityName: flags[6].substr(1).substr(0, flags[6].length - 2),
                entity: flags[5].substr(1).substr(0, flags[5].length - 2),
                idCounter: flags[4],
                counterName: flags[3].substr(1).substr(0, flags[3].length - 2),
                ivmanager: flags[7].substr(1).substr(0, flags[7].length - 2),
                chart: null,
                pointsToShowX: null,
                borneInf: null,
                unite: "",
                idInstance: flagsInstance[2].substr(1).substr(0, flagsInstance[2].length - 2),
                instanceName: flagsInstance[3].substr(1).substr(0, flagsInstance[3].length - 2),
                listPdsNull: new Array(),
                countInstance: idTreeview + "_" + i,
                countGraph: -1
            };

        seqId++;        
        graphs[graphsLastId]=graph;     
        graphsLastId++;
    }
}

Console.logs of elements:

enter image description here

任何帮助都会受到很大的限制,因为我花了几个小时试图解决(另一个以前的员工)代码..

我基本上只需要这行的浏览器友好版本 -

 var fnInstance=$('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].attributes[1].value;

1 个答案:

答案 0 :(得分:1)

原件:

fnInstance=$('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].attributes1.value;

我的建议:

var changedIforPsedoSelctor = i+1;
var nthChild = ":nth-child("+changedIforPsedoSelctor+")";
var fnInstance = $('#counterTreeviewUL'+idTreeview).children(nthChild).children(":first-child").attr("onclick");

我认为应该这样做,但如果您为此特定问题提供了HTML标记,那么回答您的问题要容易得多。我还假设属性[1]等于选择器中的“onclick”。