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 不是 String 而是 DOMString 对象,这就是 myArray[cellText] 返回 null 而不是获取我想要的数组值的原因。如果我这样做了:。

myArray['Seller ID']

它会返回“这是卖家 ID”

关于处理 DOMString 和 String 的任何提示?

4

3 回答 3

0

在 IEtextContent中应该可以工作(在文本节点上!),在其他浏览器中,使用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]

应该有效。

在 JavaScriptArrays中只能有数字索引:[ "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 回答