[英]why this simple onclick function not working
为什么这个简单的代码不起作用? 有人可以向我解释一下吗?
我在onclick
属性中调用了cc()
函数。
HTML
<div> hey </div>
<button onclick="cc()"> click me to change color</button>
使用Javascript
$(document).ready(function () {
function cc() {
$('div').css('color', 'red');
};
});
cc
不是全局函数。
它由函数声明定义,因此它的作用域是定义它的函数。
该函数是您传递给ready
方法的匿名函数。 (并且您在由于jQuery配置而运行onload
的函数内执行此操作)。
Globals(通常)是要尽可能避免的东西,而内在事件属性通常依赖于它们。
不要使用内部事件属性。 使用JavaScript绑定JavaScript事件处理程序。 由于您使用的是jQuery,请使用on
方法。
$(document).ready(function(){
function cc(){
$('div').css('color','red');
};
$('button').on('click', cc);
});
onclick
属性中的代码只能访问全局函数/变量。 函数cc
对于它定义的函数是本地的。你要么在函数之外定义它(因此它是自动全局的)或者将它分配给window.cc
以明确地使它成为全局的(我建议第二个选项) )。
你应该在document.ready
附加处理程序。就像这样
HTML
<div> hey <div>
<button id="mybutton"> click me to change color</button>
的javaScript
$(document).ready(function(){
//attach the function here
$("#mybutton").click(
function (){
$('div').css('color','red');
}
);
});
CC是全球性的
我已经更新了你的工作实例
HTML
<div> hey <div>
<button> click me to change color</button>
使用Javascript
$('button').click(function()
{
$('div').css('color','red');
});
我通常不这样做,但我想给你最小的代码更改。 当您选择div上的每个按钮时。
正如Quentin所说,cc不是一个全球性的功能。
但是,函数需要在调用之前声明。 所以在小提琴中,你应该将函数包装在head
。
更新的演示: http : //jsfiddle.net/zWtZ2/3/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.