将参数传递给函数I don'我不想立即执行
Passing argument to function I don't want to execute immediately
如果我的问题看起来很天真,很抱歉,但我似乎无法得到简单的答案。在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 dilemma... */
接下来说,我想为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
函数即可解决问题。我知道。但是,还是。有没有一种方法可以将参数传递给不想立即执行的函数?或者它真的是一条规则(或"根据定义"),当你不打算通过它传递参数时,你只使用等待执行的函数?
否则你该怎么做?
button.onclick = function() {
printName(promptInput);
};
您可以使用Function.prototype.bind()
:
bind()
方法创建一个新函数,当调用该函数时该关键字设置为提供的值,具有给定的在调用新函数时提供的任何参数之前的参数。
例如:
button.onclick = printName.bind(null, promtInput);
您可以将通常作为参数传递的数据放入其他保存位置。你可以把它放在一个隐藏的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');
}
相关文章:
- 使自动完成可搜索下拉菜单don'我不想在点击搜索时显示列表
- RequireJS加载我没有的资源'我不想
- 我想遍历一个对象数组,我不想要任何重复项
- 如何在javascript中调用onclick事件?我没有'我不想在我的HTML页面中使用任何事件
- IE11没有'我不想把重点放在“disabled”元素上
- 可以'我不想用BlackBerry Webworks 2来展示Toast
- 将参数传递给函数I don'我不想立即执行
- Jquery点击事件don'我不想开火
- 我需要创建一个事件侦听器.但是我不想使用任何框架
- 我可以'Don’我不想让我的程序继续下去;m使用document.write,因为它在html中使用JavaSc
- 页面卸载时,出现我不想要的确认框
- 不想返回整个对象,如何过滤掉我不想要的东西
- 当我添加警报(“现在它可以工作”);这个函数有效,但我不想要这个
- 我不想支持在 asp.net mvc web/intranet应用程序中关闭javascript
- 我想创建一个从 50 到 1 的倒计时,但我不想在每个数字之间倒计时相同的时间量
- 尽管设置了标头,但我不想使用 JSONP,但 cors 无法解析
- 表单值,我不想重置它们
- 谷歌地图v3-地图没有'我不想从mysqldb加载标记
- 悬停函数没有'I don’我不想工作
- 等待 ajax 返回的正确方法(我不想使用成功处理程序