2017-11-18 87 views
0

學習JS,試圖讓這個小調查工作,但我會在HTML元素的「功能沒有定義」錯誤的onclick。無法弄清楚原因,看起來功能已定義,我無法找到任何語法錯誤。我還得到一個錯誤,說「蘇打水沒有定義」,但它似乎是變量被定義爲數組中的一個對象。Javascript:函數未定義按鈕onclick事件?

<html> 
<body> 

<h3>What cats are in the room?</h3> 

Sophie: <input type="checkbox" id="sophieCheck"> 
<br></br> 
Soda: <input type="checkbox" id="sodaCheck"> 
<br></br> 
Mr.: <input type="checkbox" id="mrCheck"> 
<br></br> 

<button onclick="catsInTheRoom()">Try it</button> 
<br></br> 

<p id="cats"></p> 


<script> 
function catsInTheRoom() { 

    var myCats = [ soda, mr, sophie ]; 

    if (getElementById("sodaCheck").checked) { 
     myCats[0] = 1; 
    } else { 
     myCats[0] = 0; 
    } 
    if (getElementById("sophieCheck").checked) { 
     myCats[2] = 10; 
    } else { 
     myCats[2] = 0; 
    } 
    if (getElementById("mrCheck").checked) { 
     myCats[1] = 20; 
    } else { 
     myCats[1] = 0; 
    } 

    getElementById("cats").innerHTML = myCats[0] + myCats[1] + myCats[2]; 
} 

</script> 
</body> 
</html> 

我創建了數組,因此我可以使用switch語句的數值來根據檢查框的複選框生成不同的文本。

這個簡單的版本的工作:

Sophie: <input type="checkbox" id="sohpieCheck"> 
<br></br> 
Soda: <input type="checkbox" id="sodaCheck"> 
<br></br> 
Mr.: <input type="checkbox" id="mrCheck"> 
<br></br> 

<button onclick="myFunction()">Try it</button> 

<p id="cats"></p> 

<script> 

function myFunction() { 
    var soda = document.getElementById("sodaCheck").checked; 

    if (soda) { 
     catBehavior = "Cats are being rascals."; 
    } else { 
     catBehavior = "Cats are behaving nicely."; 
    }  

    document.getElementById("cats").innerHTML = catBehavior; 
} 

</script> 

爲什麼第二個例子中工作,但不是第一位?

回答

0

你的代碼中有一些錯誤。請檢查修復程序:

  1. <br>標籤自封閉。
  2. 蘇打水,先生和先生必須是字符串。
  3. getElementById屬於document對象(或任何其他DOM節點)。

<h3>What cats are in the room?</h3> 
 

 
Sophie: <input type="checkbox" id="sophieCheck"> 
 
<br> 
 
Soda: <input type="checkbox" id="sodaCheck"> 
 
<br> 
 
Mr.: <input type="checkbox" id="mrCheck"> 
 
<br> 
 

 
<button onclick="catsInTheRoom()">Try it</button> 
 
<br> 
 

 
<p id="cats"></p> 
 
<script> 
 
function catsInTheRoom() { 
 

 
var myCats = [ 'soda', 'mr', 'sophie' ]; 
 

 
if (document.getElementById("sodaCheck").checked) { 
 
myCats[0] = 1; 
 
} else { 
 
myCats[0] = 0; 
 
} 
 
if (document.getElementById("sophieCheck").checked) { 
 
myCats[2] = 10; 
 
} else { 
 
myCats[2] = 0; 
 
} 
 
if (document.getElementById("mrCheck").checked) { 
 
myCats[1] = 20; 
 
} else { 
 
myCats[1] = 0; 
 
} 
 

 
document.getElementById("cats").innerHTML = myCats[0] + myCats[1] + myCats[2]; 
 
} 
 
</script>

1

腳本錯誤:蘇打水,先生,蘇菲被用作變量,但之前從未定義..拋出錯誤並停止功能執行。

var myCats = [ 0, 0, 0 ]; // will initialize myCats to 0,0,0 

,或者你可以定義的變量第一:

var soda = 0, mr = 0, sophie = 0; 

短打,因爲你永遠不使用它們最初myCats定義後,初始化爲0應該足夠

0

線 'VAR myCats = [蘇打,MR,柔];'是錯誤的原因。您正在使用字符串作爲變量。如果您必須使用這些字符串,則使用這些屬性創建一個對象並按如下方式初始化值;

var myCats ={soda=0, mr=0, sophie=0}; 
if (getElementById("sodaCheck").checked) { 
    myCats.soda = 1; 
} else { 
    myCats.soda = 0; 
} 
if (getElementById("sophieCheck").checked) { 
    myCats.sophie= 10; 
} else { 
    myCats.sophie = 0; 
} 
if (getElementById("mrCheck").checked) { 
    myCats.mr = 20; 
} else { 
    myCats.mr = 0; 
} 

getElementById("cats").innerHTML = myCats.soda + myCats.mr + myCats.sophie; 
}