在参数javascript中传递时,不要将数组作为字符串连接

时间:2017-11-07 18:00:31

标签: javascript jquery arrays

我遇到了一个奇怪的问题。我有一个名为args的数组,看起来像这样(在控制台日志中打印)。请注意,Array(1)是此数组中的另一个数组。

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

当我将此数组作为参数传递给类似onclick="myFunction(' + args + ')"的函数时,我收到错误:

  

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

当我将空字符串更改为null时,它不起作用。 ["1", Array(1), null, "abc", null, null, "def", "2"]。同样的错误。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是因为您的数组中包含引号,这些引号正在onclick属性中处理。您可以使用XML表示形式(")替换引号以避免该问题,如下所示:



<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>
&#13;
&#13;
&#13;

或者,您可以使用一种类型的引号(单引号或双引号)作为参数的外部限制,并在参数内使用一组,如下所示:

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

这些方法中的任何一个都会正确打印出你的参数。

答案 1 :(得分: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);