2

当我运行此代码时,变量 items 仅附加 9999 个字符,其余部分被截断。我在上一篇文章中得到了一些答案,但问题仍然存在。

var items = [];
for (var i = 1; i < 400; i++) {
    items.push('{"Key":' + '"this is a javascript value"' +
                ",'+'" + '"Value"' + ':' + '"this is value"}');
}
alert(items); 

帮助!

4

2 回答 2

2

您正在alert输入值,这意味着数组将转换为字符串,然后放入警报框中。最有可能的是,字符串被截断到某个最大长度,否则由于图形原因它不适合屏幕或盒子。

当在内存中尝试并且只提醒长度时,一切似乎都很好,也toString()返回正确的长度。我尝试了 4000 个元素并分析了长度:http: //jsfiddle.net/LWD2h/1/

于 2011-05-08T14:54:41.923 回答
1

警报的 10,000 个字符限制有一个解决方法(在 FireFox 中,在其他浏览器中未经测试)。如果您只想出于调试目的而不是向用户显示警报,则可以使用提示语句。代码如下所示:

var myLongString = "A really long string";
prompt('',myLongString);

当它显示时,您只会在提示中看到一行文本,但您可以单击提示框并选择所有文本并将其粘贴到编辑器中以根据需要进行处理。对你的用户这样做会很糟糕,但它非常适合快速和肮脏的调试。prompt 语句会删除所有换行符,因此在调用它之前,您应该将它们转换为其他字符串,然后在文本编辑器中将它们转换回。

将该代码合并到上面的代码中可以得到:

var myLongString= "A\nreally\nlong\nstring\nwith\nline\nfeeds.";
prompt('', myLongString.replace(/\n/g,"=@@=");

将字符串粘贴到文本编辑器后,您将搜索“=@@=”并将其替换为“\n”。

于 2016-12-31T01:27:14.647 回答