javascript
  • arrays
  • smarty
  • 2017-04-25 49 views 0 likes 
    0

    如何将JS数组转换为外部脚本? 我有智者阵列{} myArray的这个代码:如何将JS数组转换为外部脚本

    <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

    好像你发送一个普通字符串“{myArray的}”,你试过没有双引号,只是发送{} myArray的? – randomguy04

    回答

    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) 
    

    ,并使用arguments对象在JS

    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); 
    } 
    
    相关问题