我们如何从HTML
为此案例调用start()javascript函数 (function() {
var never, start;
never = function() {
return alert("try");
};
start = function() {
return alert("try harder");
};
}).call(this);
我的HTML
<input type="button" value="press" onclick="never()" ></input>
答案 0 :(得分:4)
将事件处理程序代码分配给属性时,所使用的任何函数都需要在全局变量范围内可用。
要完成此操作,您可以将它们设为window
的属性。目前,您的never
和start
函数是IIFE函数范围的本地函数。
// IIFE function
(function() {
// var never, start; // local variables
// Make the functions globally scoped
window.never = function() {
return alert("try");
};
window.start = function() {
return alert("try harder");
};
}).call(this);
如果您愿意,可以公开单个命名空间
// IIFE function
(function() {
var ns = window.ns = {};
// Make the functions globally scoped
ns.never = function() {
return alert("try");
};
ns.start = function() {
return alert("try harder");
};
}).call(this);
然后更改内联处理程序以使用ns.never();
和ns.start();
。
答案 1 :(得分:2)
首先给你的输入标签一个id:
<input id="someInputField" type="button" ... />
接下来,在文档就绪时执行代码,在其上注册回调:
$(document).ready( function() {
// define a function called never
function never() {
alert( 'Never say never');
}
// register a function on the click event handler of that input tag:
$('#someInputField').click( never );
});
答案 2 :(得分:2)
你可能会发现使用像jQuery这样的javascript库更容易。使用该库可以执行此操作:
<script type="text/javascript">
$(document).ready(function() {
var count = 0
$("#tryme").click(function () {
if (count == 0) {
alert('try');
count++
}
else if (count == 1) {
alert('try harder');
}
});
});
</script>
<input type="button" value="press" id="tryme" ></input>