为什么这个简单的代码不起作用?有人可以向我解释一下吗?
我在cc()
属性中调用了onclick
函数。
HTML
<div> hey </div>
<button onclick="cc()"> click me to change color</button>
的Javascript
$(document).ready(function () {
function cc() {
$('div').css('color', 'red');
};
});
答案 0 :(得分:10)
cc
不是全局功能。
它是用函数声明定义的,因此它的作用域是它定义的函数。
该函数是您传递给ready
方法的匿名函数。 (并且由于您的jQuery配置,您在运行onload
的函数内执行此操作。)
全局(通常)要尽可能避免某些事情,内在事件属性通常依赖于它们。
不要使用内部事件属性。使用JavaScript绑定JavaScript事件处理程序。由于您使用的是jQuery,请使用on
方法。
$(document).ready(function(){
function cc(){
$('div').css('color','red');
};
$('button').on('click', cc);
});
答案 1 :(得分:1)
onclick
属性中的代码只能访问全局函数/变量。函数cc
对于其定义的函数是局部的。您将要在该函数之外定义它(因此它是自动全局的)或将其分配给window.cc
以明确地生成它全球化(我建议第二种选择)。
答案 2 :(得分:0)
您应该将处理程序附加到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');
}
);
});
答案 3 :(得分:0)
CC是全球性的
我已经更新了你的工作实例
HTML
<div> hey <div>
<button> click me to change color</button>
的Javascript
$('button').click(function()
{
$('div').css('color','red');
});
我通常不会这样做,但我想对您的代码进行最少的更改。当您选择div上的每个按钮时。
答案 4 :(得分:0)