0

チェックボックスの選択に基づいてグラフを表示していて、小さな問題が発生しました。

現在、すべて選択チェックボックスがオンになっている場合でも、最初のグラフのみをループして選択しています。

以下のコードでわかるように、前に使用していた行はコメントアウトされています。

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

Firefox でのみ完全に動作します - すべてのグラフが正しく表示されますが、要素にアクセスしようとする方法が原因で Chrome/IE では動作しません。

これを次の 2 行に置き換えました。

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

私がそれを置き換えた2行により、すべてが3つのブラウザすべてで機能します(IEまたはChromeでエラーはもうありません)が、これまでに表示される唯一のグラフは最初に見つかったグラフです.3つの要素が選択されている場合、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マークアップを提供すると、質問に答えるのがはるかに簡単になります。また、attributes[1]はセレクターの「onclick」に等しいと想定しています。

于 2012-11-05T12:28:51.753 に答える