【问题标题】:How to transfer JS array to external script如何将 JS 数组传输到外部脚本
【发布时间】:2017-04-25 14:39:21
【问题描述】:

如何将 JS 数组传输到外部脚本? 我有 smarty 数组 {myarray} 和这段代码:

<li onclick='myfunction("{myarray}")'>TRANSFER</li>

externalscript.js 看起来:

function myfunction(myarray)
{
    var content = '<table class="table-data-sheet" id="table">';
    {foreach $myarray key=k item=f}
    content +='<tr>';
    content += '<td>' + "{$k}" + '</td>' + '<td>' + "{$f}" + '</td>';
    content += '</tr>';
    {/foreach}
    content += '</table>';
    document.getElementById("table").innerHTML = content;
}

但它不起作用。我不知道为什么。 我可以传递变量,但不能传递数组。

【问题讨论】:

  • 您似乎发送的是纯字符串“{myarray}”,您是否尝试过不使用双引号而只发送 {myarray}?

标签: javascript arrays smarty


【解决方案1】:

你可以对数组进行json_encode

<li onclick="myfunction({$myarray|@json_encode nofilter})">Transfer</li>

在 JS 中作为对象使用

function myfunction(myObj) {
    var tableElement = document.createElement('table');
    tableElement.id = 'tableid';
    tableElement.className = 'table-data-sheet';
    var content = '';
    var valueKeys = Object.keys(myObj);
    for(var i=0;i<valueKeys.length;i++){
        content +='<tr><td>'+valueKeys[i]+'</td><td>'+myObj[valueKeys[i]]+'</td></tr>';
    }
    tableElement.innerHTML = content;
    document.getElementById("tabledivid").appendChild(tableElement);
}

如果你有一个值数组而不是键值结构,你可以这样做

implode(', ', $fruit)

并在 JS 中使用 arguments 对象

function myfunction() {
    var tableElement = document.createElement('table');
    tableElement.id = 'tableid';
    tableElement.className = 'table-data-sheet';
    var content = '';
    for(var i=0;i<arguments.length;i++){
        content +='<tr><td>'+i+'</td><td>'+arguments[i]+'</td></tr>';
    }
    tableElement.innerHTML = content;
    document.getElementById("tabledivid").appendChild(tableElement);
}

【讨论】:

    猜你喜欢
    • 2021-05-14
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2021-03-26
    • 2022-10-24
    • 2020-05-31
    • 2011-10-14
    相关资源
    最近更新 更多