2017-04-25 3 views
0

Wie kann ich JS-Array zu externen Skript übertragen? Ich habe Smarty Array {myarray} und diesen Code:Wie JS-Array zu externen Skript übertragen

<li onclick='myfunction("{myarray}")'>TRANSFER</li> 

externalscript.js aussieht:

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; 
} 

Aber seine nicht funktioniert. Ich weiß nicht warum. Ich kann Variable, aber nicht Array übertragen.

+0

Es sieht so aus, als würden Sie eine einfache Zeichenfolge "{myarray}" senden, haben Sie es ohne Anführungszeichen versucht und nur {myarray} gesendet? – randomguy04

Antwort

0

könnten Sie json_encode das Array

<li onclick="myfunction({$myarray|@json_encode nofilter})">Transfer</li> 

und es als Objekt in 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); 
} 

, wenn Sie ein Array von Werten und keinen Schlüsselwert Konstrukt haben würden, könnten Sie vielleicht dies tun

implode(', ', $fruit) 

und verwenden Sie die Argumente Objekt in 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); 
} 
Verwandte Themen