0

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

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

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

//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 元素:

在此处输入图像描述

任何帮助都会非常受欢迎,因为我花了几个小时试图制定(另一位前员工的)代码..

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

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

1 回答 1

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”。

于 2012-11-05T12:28:51.753 回答