如何使IE9中的Array.toString()与现代浏览器兼容
How to make Array.toString() in IE9 compatible with modern browsers
我想在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]
我该如何解决这个问题?
如果您打算使用 toString
方法,则可以像这样覆盖它:
var myArray = [1, 2, 3];
Array.prototype.toString = function () {
return this.join(', ');
}
console.log(myArray.toString()); //1, 2, 3
这应该适用于大多数较旧的浏览器。
小提琴:http://jsfiddle.net/KyleMuir/KUzZL/
使用 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(",");
}
相关文章:
- 使用 Selenium 在 IE9 浏览器中查找 PDF 文本
- JavaScript 不适用于 IE9,但每隔一个浏览器?怎么了
- 浏览器.文件InvokeScript()don'我不在IE9工作
- 如何使IE9中的Array.toString()与现代浏览器兼容
- jQuery 检测浏览器 IE9 及更低版本并抛出一个模式进行升级
- IE9浏览器中的内联ckeditor只工作一次(在弹出面板中)
- Webkit 似乎不支持层上的 $.focus(),而 IE9 支持.无论如何,让webkit浏览器也这样做
- 最低 IE9 浏览器要求和其他等效浏览器版本
- 多文件上传,支持所有浏览器,特别是ie7,ie8和ie9
- JS检测浏览器宽度和高度在Chrome中的工作;Safari,但不是IE9或FF9
- 为什么与其他浏览器相比,IE9的地理定位支持被破坏了
- JS检测浏览器分辨率在Chrome中工作;Safari,但不是IE9或FF9
- IE9浏览器缓存问题
- ExtJS-Ext.MessageBox没有't在其中一个客户端IE9浏览器上弹出
- IE9确认浏览器退出
- IE9 cookies不工作一旦浏览器关闭和打开
- 使用jQuery和ie9浏览器无法保存cookie
- Javascript/JQuery浏览器测试框架为IE9/FF/Chrome
- 需要一种方法来禁用IE9浏览器缓存
- 当浏览器模式为IE9时,如何从JS检测IE10 ?