2015-04-05 56 views
-1

我試過使用JSFiddle的一些代碼,它工作正常。Javascript不能正常工作/正在加載

雖然我嘗試在HTML中實現它,但它的工作方式不同。

這是我到目前爲止有:

的Javascript:

var checker = document.getElementById('checkme'); 
var sendbtn = document.getElementById('sendNewSms'); 
checker.onchange = function(){ 
    if(this.checked){ 
     sendbtn.disabled = false; 
    } else { 
     sendbtn.disabled = true; 
    } 

} 

HTML:

<h1>Button should be enabled if at least one checkbox is checked</h1> 
<input type="checkbox" id="checkme"/><input type="submit" name="sendNewSms" class="inputButton" id="sendNewSms" value=" Send " disabled/> 
+0

那麼你在瀏覽器的控制檯中得到什麼錯誤? – j08691 2015-04-05 15:04:12

+0

這一個: 未捕獲TypeError:無法設置null的屬性'onchange' – user3437020 2015-04-05 15:12:30

+0

在旁註:'sendbtn.disabled =!this.checked;' – elmigranto 2015-04-05 15:15:34

回答

1

你需要用window.onload事件裏面的腳本

<html> 
<head><title>Still learning</title></head> 
<body> 
<script type="text/javascript"> 
window.onload = function() { 
    var checker = document.getElementById('checkme'); 
    var sendbtn = document.getElementById('sendNewSms'); 
    checker.onchange = function(){ 
    if(this.checked){ 
     sendbtn.disabled = false; 
    } else { 
     sendbtn.disabled = true; 
    } 
    } 
}; 
</script> 

<h1>Button should be enabled if at least one checkbox is checked</h1> 
<input type="checkbox" id="checkme"/><input type="submit" name="sendNewSms" class="inputButton" id="sendNewSms" value=" Send " disabled/> 
</body> 
</html> 

閱讀上的HTML基礎知識確保dom元素可用。

window.onload = function() { 
 
var checker = document.getElementById('checkme'); 
 
var sendbtn = document.getElementById('sendNewSms'); 
 
checker.onchange = function(){ 
 
    if(this.checked) sendbtn.disabled = true; 
 
    else sendbtn.disabled = false; 
 
} 
 
}
<input type="checkbox" id="checkme"/> 
 
<input type="submit" name="sendNewSms" class="inputButton" id="sendNewSms" value=" Send " />

+0

它的工作!非常感謝 :) – user3437020 2015-04-05 15:31:39

1

您的JavaScript需要在<script>標籤。目前尚不清楚,如果他們還是不通過你的問題,所以我認爲他們不是:

+0

這裏是演示 http://jsfiddle.net/brbcoding/n9z5D/ 我已經添加了腳本標記,正如您所提到的。還是行不通。 – user3437020 2015-04-05 15:04:29

+0

@ user3437020小提琴工作正常。我想你還沒有添加任何html結構?看我更新的例子。 – Mackan 2015-04-05 15:14:45

1

This one: Uncaught TypeError: Cannot set property 'onchange' of null

您的javascript執行之前的HTML完全完裝。 這就是爲什麼document.getElementById('checkme')返回null。將函數放入window.onload,並將腳本插入到<head>中。

<html> 
<head><title>Still learning</title> 
<script> 
window.onload = function() { 
    var checker = document.getElementById('checkme'); 
    var sendbtn = document.getElementById('sendNewSms'); 
    checker.onchange = function(){ 
    if(this.checked){ 
     sendbtn.disabled = false; 
    } else { 
     sendbtn.disabled = true; 
    } 
    } 
}; 
</script> 
</head> 
<body> 
<h1>Button should be enabled if at least one checkbox is checked</h1> 
<input type="checkbox" id="checkme"/><input type="submit" name="sendNewSms" class="inputButton" id="sendNewSms" value=" Send " disabled/> 
</body> 
</html> 

它現在應該工作。看到這個小提琴:http://jsfiddle.net/brbcoding/n9z5D/