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