所以这是我正在做的一个愚蠢的版本。我想更改一个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>
答案 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)
您需要做的只是在头部声明变量。该变量是用户定义和硬编码的,因此它可以加载到头部,然后在单击发生时在函数中引用它。您不需要传递参数