很抱歉,如果我的问题看起来很幼稚(这里有点新手),但我似乎无法得到一个简单的答案。 在JavaScript中我尝试这样的东西
window.onload = init; *// ok, this assigns to the window load event a function that doesn't execute straight away*
// now I define my init()function
function init(){
// say...
alert('Noise!');
/* but here is my dillema...
接下来说我想为button.onclick事件分配一个只在我点击按钮时执行的功能。 但是(!这里是......!)我想从这里传递参数到这个函数而不会导致执行,因为它(显然)有括号。 类似的东西:* /
var button = document.getElementById('button');
var promptInput = prompt("Name?");
button.onclick = printName(promtInput); // I only want to print name on button click
}
function printName(name){
alert(name);
}
所以......好吧,我知道这个例子很愚蠢。只需移动printName()函数内的所有提示收集并分配给button.onclick一个无括号的printName函数将解决问题。我知道。但是,仍然。有没有办法将args传递给你不想立即执行的函数?或者它确实是一个规则(或“定义”)你只使用等待执行的函数,当你不打算通过它传递args时?
或者你最喜欢这件事呢?
非常感谢! TY
答案 0 :(得分:4)
button.onclick = function() {
printName(promptInput);
};
答案 1 :(得分:0)
您可以使用Function.prototype.bind()
:
bind()
方法创建一个新函数,当被调用时,它具有它 此关键字设置为提供的值,具有给定的序列 调用新函数时提供的任何参数。
例如:
button.onclick = printName.bind(null, promtInput);
答案 2 :(得分:0)
您可以将通常作为参数传递的数据放入其他某个持有位置。您可以将其放在隐藏的HTML元素中,也可以使用sessionStorage API来保留它。所以你的代码看起来像这样:
var button = document.getElementById('button');
var promptInput = prompt("Name?");
sessionStorage.setItem('MyName', promptInput);
button.onclick = printName; // I only want to print name on button click
}
function printName(){
alert(sessionStorage.getItem('MyName');
}