【问题标题】:JavaScript Array is getting overwrittenJavaScript 数组被覆盖
【发布时间】:2021-01-29 07:31:16
【问题描述】:

我有一个Smarty foreach 循环,在其中我尝试推送到一个名为arrayPorpertiesJavaScript array。但是arrayPorperties 的内容只是获得了所有先前值的最后一个值被覆盖。任何解决方案?
注意:assign 必须在循环内完成,因为它是从 Smarty 数组 user_properties 获取值,否则它将无法工作

<script type="text/javascript">user_properties = [];</script>
{​​​​​​​foreach from=$user_properties item="user"}​​​​​​​
    {​​​​​​​assign var='tmp_coords' value=$user->get_coords()}​​​​​​​
        <script>
            user_properties.push(
            ['{$tmp_coords[0]}', '{$tmp_coords[1]}', '{$user->get_name()}', '{$user->get_id()}']
            )
        </script>
{​​​​​​​/foreach}​​​​​​​

【问题讨论】:

  • 您的代码看起来运行良好。你能发布你的结果吗?还有$user_properties
  • 请在循环浏览器中发view-source
  • 这是Smarty问题,还是JS问题?您尝试过调试哪些部分出了问题?
  • @NicoHaase 这是Smarty问题,JS应该没问题。
  • 那么请编辑您的问题以包含更多信息。生成的 JS 应该是什么样子?如果您知道结果应该如何,为什么不更改 Smarty 代码以生成该标记?

标签: javascript arrays smarty


【解决方案1】:

我认为你可以这样做。

但我没有测试环境。也许你需要在那之后使用 JSON.Parse。

<script type="text/javascript">
    var user_properties = '{ldelim}{$user_properties}{redlim}';
</script>

【讨论】:

    猜你喜欢
    • 2015-06-05
    • 2012-05-09
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多