【问题标题】:Why is my simple for-each loop, on my collection of objects, not working (JQuery)?为什么我的对象集合上的简单 for-each 循环不起作用(JQuery)?
【发布时间】:2014-04-27 15:03:02
【问题描述】:

我有一个对象集合,这些对象是通过 EL 在 JavaScript/JQuery 中检索的(至少我是这么认为的)。我将变量命名为“国家”。调用 alert(countries) 后,我的输出符合预期。我有四个元素,应该是。

我认为这将是世界上最简单的事情,但由于未知原因,它不起作用所以...帮忙?

var countries = "${requestScope.countries}";

alert(countries) 给出以下输出:

[beans.CountryBean@(id#), beans.CountryBean@(id#), 
beans.CountryBean@(id#), beans.CountryBean@(id#)]

@AaronDigulla 建议使用以下语法:

$.each(countries, function(index, value) { ... });

但是这个几乎相同的代码没有输出。

$.each(countries, function(index, value) { alert(index + "here");});

我假设它会产生 4 个警报是不是错了?

【问题讨论】:

  • 你说的这个“EL”是什么?
  • 向反对者提出的问题:想解释一下为什么您认为这个问题不好?
  • 我可以看到这不是一个受欢迎的问题。我想明确表示我确实已经努力解决这个问题,而且这个问题应该足够清楚。随意投反对票,但我仍然希望得到指点。

标签: javascript jquery foreach


【解决方案1】:

使用$.each(countries, function(index, value) { ... });

$.each() 可以迭代各种事物(数组、对象和 JQuery 选择器)。

接下来,您需要将 bean 转换为 JavaScript。浏览器无法理解beans.CountryBean@(id#)。使用像 Gson 这样的 JSON 框架来创建 JSON 字符串:

var countries = ${new Gson().toJson(requestScope.countries)};

请注意,您不能再引用该字符串; Gson 会为你做这件事。但我担心这个表达式超出了 EL 可以做的范围。在这种情况下,您需要在其他地方进行转换并将其放入 EL 上下文中。

【讨论】:

  • 谢谢,但我似乎无法让它工作。我已经搜索了您链接到的页面,并且我尝试了大多数(如果不是所有建议的语法)。以下代码根本没有给我任何输出。 $.each(countries, function(index, value) { alert(index + "here");});
  • 你真的应该使用console.log() 而不是alert(),因为它不会停止脚本。使用浏览器的开发人员工具在代码中设置断点,然后确保 countries 包含您所期望的内容(并且您没有任何其他错误)。
  • 再次感谢。我对 console.log() 没有任何经验。我改变了它,但在第一次尝试时仍然没有输出。我希望它会出现在我的 Eclipse 控制台中,但我会阅读更多内容来确定这是否是一个有效的假设。即使我还没有弄清楚我的问题,并且在这个问题上失去了声誉点,我仍然学到了两个我可以在未来使用的新东西,这就是这个网站对我的意义所在。 :)
  • $.each(countries, function(index, value) { }); 就目前而言,大括号内没有任何内容,实际上停止了执行,并中断了包含代码的函数。我很困惑....
  • 我在 Chrome 的检查器中发现了一个错误代码:Uncaught Error: Syntax error, unrecognized expression: [beans.CountryBean@169fd6, beans.CountryBean@1579aa5, beans.CountryBean@69ee4e, beans.CountryBean@9c5cbd]
猜你喜欢
  • 2014-07-28
  • 2012-05-17
  • 2010-10-17
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 2015-02-22
相关资源
最近更新 更多