2017-11-07 25 views
1

私は奇妙な問題に遭遇しています。私はargsという配列を持っています(コンソールログに表示されています)。 Array(1)は、この配列内の別の配列です。パラメータに渡すと文字列として配列を連結しません

["1", Array(1), "", "abc", "", "", "def", "2"] 

私はこのonclick="myFunction(' + args + ')"ような関数へのパラメータとして、この配列を渡すと、私はエラーを取得:

SyntaxError: expected expression, got ',' myFunction(1,element1,,abc,,,def,2)

私はどちらかnullに空の文字列を変更したときにそれは動作しません。 ["1", Array(1), null, "abc", null, null, "def", "2"]。同じエラー。これをどうやって回避するのですか?

+0

良い質問。あなたは[mcve]を作れますか? –

+0

上記の配列の予想される引数は何ですか? –

+0

インライン 'onclick'を使用しないでください。代わりにイベントリスナーを追加してください。 – charlietfl

答えて

1

あなたの配列がonclick属性内部で処理なっていることで、引用符を持っているからです。

<button onclick="console.log([&quot;1&quot;, Array(1), &quot;&quot;, &quot;abc&quot;, &quot;&quot;, &quot;&quot;, &quot;def&quot;, &quot;2&quot;]);">Click Me</button>

それとも、あなたは外のため(単一または二重)引用符のいずれかのタイプを使用することができます:あなたはこのように、その問題を回避するために、そのXML表現(&quot;)と引用符を置き換えることができます

function myFunction(arg) { 
 
    console.log(arg); 
 
}
<button onclick='myFunction(["1", Array(1), "", "abc", "", "", "def", "2"])'>Click Me</button>

:このような引数の制限、および引数の内側に1セット、 210

これらのいずれの方法でも、引数が正しく出力されます。

+1

または一重引用符を使用する - JSでは、エスケープせずに別の文字列に簡単に埋め込むことができるように、二重引用符または一重引用符で文字列リテラルを指定できます。 (おっと、答えを更新している間にこれを書きました;-) – Val

0

var div = document.createElement('div'); 
 
var array = ["1", [ "blah" ], "abc", "", "", "def", "2"]; 
 

 
//put the onclick on the element, not as an attribute of the html 
 
div.onclick = function(){ 
 
    console.log(array); 
 
}; 
 

 
div.innerHTML = "Click Me"; 
 

 
document.body.appendChild(div);

関連する問題