繁体   English   中英

如何将JS数组传输到外部脚本

[英]How to transfer JS array to external script

如何将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;
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM