我遇到了一个奇怪的问题。我有一个名为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"]
。同样的错误。我该如何解决这个问题?
答案 0 :(得分:1)
这是因为您的数组中包含引号,这些引号正在onclick
属性中处理。您可以使用XML表示形式("
)替换引号以避免该问题,如下所示:
<button onclick="console.log(["1", Array(1), "", "abc", "", "", "def", "2"]);">Click Me</button>
&#13;
或者,您可以使用一种类型的引号(单引号或双引号)作为参数的外部限制,并在参数内使用一组,如下所示:
function myFunction(arg) {
console.log(arg);
}
&#13;
<button onclick='myFunction(["1", Array(1), "", "abc", "", "", "def", "2"])'>Click Me</button>
&#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);