如何将JS数组转移到外部脚本

时间:2017-04-25 14:39:21

标签: javascript arrays smarty

如何将JS数组传输到外部脚本? 我有聪明的数组{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;
}

但它不起作用。我不知道为什么。 我可以传输变量而不是数组。

1 个答案:

答案 0 :(得分:0)

你可以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);
}