2

javascriptを使用して、displaytagテーブルの一連の列ヘッダーのツールチップを追加しています。配列を使用して対応する説明をヘッダーにマップしようとしていますが、機能しません。

        var columnHeaderCells = document.getElementById("tableMES").getElementsByTagName("thead")[0].rows[0].cells; 

        var myArray = new Array();
        myArray['Seller ID'] = "this is seller ID";
        myArray['Clicks'] = "this is clicks";
        myArray['Sales'] = "this is Sales";

        var i = 0;
        while (columnHeaderCells[i]){

            var cellText = columnHeaderCells[i].textContent;
            //cellText is not text

            //alert(myArray[cellText] + "---" + cellText);

            columnHeaderCells[i].setAttribute('title', myArray[cellText]);

            i++;
        }

問題は、cellTextが文字列ではなくDOMStringオブジェクトであることにあるようです。そのため、myArray [cellText]は、必要な配列値を取得する代わりにnullを返します。私がやった場合:。

myArray['Seller ID']

「これは販売者IDです」と返されます

DOMStringとStringを扱うためのヒントはありますか?

4

3 に答える 3

0

IEではtextContent(テキストノードで!)動作するはずですが、他のブラウザでは、を使用しますnodeValue


また:

var myArray = new Array();
myArray['Seller ID'] = "this is seller ID";
myArray['Clicks'] = "this is clicks";
myArray['Sales'] = "this is Sales";

これは配列ではありません。これはオブジェクトです。代わりにそのように書いてください:

var myObject = {};
myObject['Seller ID'] = "this is seller ID";
myObject['Clicks'] = "this is clicks";
myObject['Sales'] = "this is Sales";

myObject[cellText]

これは機能するはずです。

JavaScriptではArrays、数値インデックスのみを持つことができます。[ "zero", "one", 2, "3" ]

連想配列(またはHashMapまたはプロパティ、あるいはそれらを呼び出したい場合)が必要な場合は、オブジェクトを使用します{}

于 2012-04-13T22:29:47.323 に答える
0

暗闇の中でいくつかの刺し傷をしますが、これを試してください:

var cellText = columnHeaderCells[i].textContent + "";

またはこれ:

var cellText = String(columnHeaderCells[i].textContent);

またはこれ:

var cellText = [columnHeaderCells[i].textContent].join("");

またはこれ:

var cellText = columnHeaderCells[i].textContent.toString();

それらのいずれかがそれを JS 文字列に変換する必要があります。

于 2012-04-13T22:31:39.213 に答える
0

innerHTMLの代わりに試してくださいtextContent

于 2012-04-13T23:38:33.870 に答える