javascript
  • arrays
  • smarty
  • 2017-04-25 48 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); 
    } 
    
    相關問題