2014-03-13 215 views
3

爲什麼這個簡單的代碼不工作?有人可以向我解釋嗎?爲什麼這個簡單的onclick函數不起作用

JSFiddle

我也打電話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'); 
    }; 
}); 
+0

重複嗎? http://stackoverflow.com/questions/5431351/simple-example-doesnt-work-on-jsfiddle – R3tep

+0

不容易做一個簡單的$('。button')。click function? – johnny04501

+0

沒有找到更簡單的方法,尋找問題的根源:) – halkujabra

回答

10

cc不是全球功能。

它是用一個函數聲明中定義,所以它的作用範圍是它的定義。

這個函數是你傳遞給ready方法匿名一個功能。 (並且你在一個函數內部執行該操作,因爲你的jQuery配置,你運行onload)。


全局(通常)是要儘可能避免的事情,並且內在事件屬性通常取決於它們。

請勿使用內部事件屬性。使用JavaScript綁定JavaScript事件處理程序。由於您使用的是jQuery,請使用on方法。

$(document).ready(function(){ 

    function cc(){ 
     $('div').css('color','red'); 
    }; 

    $('button').on('click', cc); 
}); 

demo

1

onclick屬性的代碼只能訪問全局函數/變量。函數cc對於它定義的函數是局部的。您需要在該函數之外定義它(因此它是自動全局的),或者將其指定給window.cc以明確地使其成爲全局的(我建議第二個選項)。

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'); 
     } 
    ); 

}); 

DEMO

0

CC是一個全球性的

我已經更新了你的工作示例

的Html

<div> hey <div> 
<button> click me to change color</button> 

的Javascript

$('button').click(function() 
{ 
    $('div').css('color','red');      
}); 

http://jsfiddle.net/zWtZ2/4/

通常我不會做不甘示弱這個,但我想給你迷你mal更改爲您的代碼。當你選擇div上的每個按鈕時。

+0

是的這是更簡單的方法來做到這一點,就像他之前做的那樣 – johnny04501

0

正如Quentin所說,cc不是全局函數。

但是,函數需要在被調用之前聲明。因此,在小提琴中,您應該將功能包裝在head中。

更新演示:http://jsfiddle.net/zWtZ2/3/

相關問題