将onclick更改为以变量作为参数的函数

时间:2014-03-02 00:36:33

标签: javascript onclick

所以这是我正在做的一个愚蠢的版本。我想更改一个span的onclick来调用一个以变量作为参数的函数。我希望它在我创建新的onclick时使用变量,因为它不是因为变量是在点击时。

<html>
<head>
<script>
function share(it) {
  alert("We wanted 1, we got "+ it);
}
</script>
</head>
<body>
<span id="key">Click me</span>

<script>
var x = 1;
document.getElementById('key').onclick = function() {share(x)}
x++;
</script>

</body>
</htmL>

4 个答案:

答案 0 :(得分:1)

我认为你需要这个:

<html>
<head>
<script>
function share(it) {
  alert("We wanted 1, we got "+ it);
}
</script>
</head>
<body>
<span id="key">Click me</span>

<script>
function assign(y) {
   return function() { share(y); };
}
var x = 1;
document.getElementById('key').onclick = assign(x);
x++;
</script>

</body>
</html>

答案 1 :(得分:1)

不要直接使用函数(),使用创建onclick函数的函数:

<html>
<head>
<script>
function share(it) {
  alert("We wanted 1, we got "+ it);
}

function makeFunction(x) {
return function() {share(x);}
}

</script>
</head>
<body>
<span id="key">Click me</span>

<script>
var x = 1;
document.getElementById('key').onclick = makeFunction(x)
x++;
</script>

</body>
</html>

答案 2 :(得分:0)

复制x并将其传递给函数

<html>
<head>
<script>
function share(it) {
  alert("We wanted 1, we got "+ it);
}
</script>
</head>
<body>
<span id="key">Click me</span>

<script>
var x = 1;
var copyOfx = x + 0;
document.getElementById('key').onclick = function() {share(copyOfx)}
x++;
</script>

</body>

答案 3 :(得分:0)

您需要做的只是在头部声明变量。该变量是用户定义和硬编码的,因此它可以加载到头部,然后在单击发生时在函数中引用它。您不需要传递参数