如何将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;
}
但它不起作用。我不知道为什么。 我可以传输变量而不是数组。
答案 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);
}