所以我根据复选框的选择显示图表并遇到了一个小问题。
我正在循环并仅选择第一个图表,即使选中了全选复选框 - 这意味着我会得到相同数量的第一个图形而不是十个唯一图形。
正如您将在下面的代码中看到的那样,我使用的上一行已被注释掉:
//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:
任何帮助都会受到很大的限制,因为我花了几个小时试图解决(另一个以前的员工)代码..
我基本上只需要这行的浏览器友好版本 -
var fnInstance=$('#counterTreeviewUL'+idTreeview)[0].children[i].children[0].attributes[1].value;
答案 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”。