在javascript中将DOMString转换为String

时间:2012-04-13 22:26:34

标签: javascript string dom

我正在使用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的任何提示吗?

3 个答案:

答案 0 :(得分: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或属性,或者你想要调用它们),请使用一个对象:{};

答案 1 :(得分: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字符串。

答案 2 :(得分:0)

尝试使用innerHTML代替textContent