我想为DOM中的属性分配一个数组值:
var myArray = [1, 2, 3];
elem.setAttribute('value', myArray)
在现代浏览器中,你得到了结果:
<input value="1,2,3">
但是在较旧版本中(直到IE9):
<input value="[object]">
JSON.stringify
不是解决方案,因为这会生成:
<input value="[1,2,3]">
问题是现代浏览器中的myArray.toString()
输出:
1,2,3
而在较旧的那些:
[object]
我该如何解决这个问题?
答案 0 :(得分:1)
如果您打算使用toString
方法,可以像这样覆盖它:
var myArray = [1, 2, 3];
Array.prototype.toString = function () {
return this.join(', ');
}
console.log(myArray.toString()); //1, 2, 3
这适用于大多数旧版浏览器。
答案 1 :(得分:0)
使用JSON.stringify(array)
代替.toString()
。此外,您可以编写一个这样的函数,将您的数组转换为字符串。
function arrayToString(array) {
var arrayStr = JSON.stringify([1, 2, 3]);
arrayStr = arrayStr.substring(1);
arrayStr = arrayStr.substring(0, arrayStr.length -1);
return arrayStr;
}
甚至缩短:
var str = array.join(",");
示例:
arrayToString([1, 2, 3, 4]); // returns "1, 2, 3, 4"
此外,您可以扩展Array
的原型覆盖toString()
函数:
Array.prototype.toString = function () {
return this.join(",");
}