2013-07-21 14 views
0

該代碼適用於所有區域和數字,除非變量id等於9.然後#10圖像(#9索引)不會出現,未定義消息被寫入。當id等於任何其他數字時,checkAnswer()函數會針對每個被點擊區域發出正確或錯誤的警告,除了#10區域之外,它不會提醒任何人。代碼有什麼問題? (圖像都是正確的目錄)JS Math.random沒有得到-9-

<!doctype html> 
<html> 
<head> 

<script type="text/javascript"> 

var cobras=new Array(); 

cobras[0] = '<img src="cobra1.jpg">'; 
cobras[1] = '<img src="cobra2.jpg">'; 
cobras[2] = '<img src="cobra3.jpg">'; 
cobras[3] = '<img src="cobra4.jpg">'; 
cobras[4] = '<img src="cobra5.jpg">'; 
cobras[5] = '<img src="cobra6.jpg">'; 
cobras[6] = '<img src="cobra7.jpg">'; 
cobras[7] = '<img src="cobra8.jpg">'; 
cobras[8] = '<img src="cobra9.jpg">'; 
cobras[9] = '<img src="cobra10.jpg">'; 
cobras[10] = '<img src="cobra11.jpg">'; 
cobras[11] = '<img src="cobra12.jpg">'; 
cobras[12] = '<img src="cobra13.jpg">'; 
cobras[13] = '<img src="cobra14.jpg">'; 
cobras[14] = '<img src="cobra15.jpg">'; 



id=Math.floor(Math.random()*15); 

function makeDisappear() { 
var elem = document.getElementById("main"); 
elem.style.visibility = "hidden"; 
var elem = document.getElementById("empty"); 
elem.style.visibility = "visible"; 

var bodyE1 = document.body; 
bodyE1.innerHTML += cobras[id]; 

} 


function checkAnswer(a) { 
if (a==id) { 
    alert('Correct!') 
    } 
else { 
    alert('Wrong!') 
    } 
} 


</script> 

</head> 
<body> 


<center> <button onclick="makeDisappear();"> Hide </button> </center> 

<center> <img id="main" src="..\images\cobra.jpg" width="941" height="689" alt="Todos os bichos."> </center> 
<center> <img style="visibility: hidden;" id="empty" src="..\images\vazio.jpg" width="941" height="689" alt="Vazio." usemap="#empty"> </center> 


<map name="empty"> 
    <area shape="rect" coords="0,230,190,40" alt="1" onclick="checkAnswer(1)"> 
    <area shape="rect" coords="191,230,380,40" alt="2" onclick="checkAnswer(2)"> 
    <area shape="rect" coords="381,230,570,40" alt="3" onclick="checkAnswer(3)"> 
    <area shape="rect" coords="571,230,760,40" alt="4" onclick="checkAnswer(4)"> 
    <area shape="rect" coords="761,230,941,40" alt="5" onclick="checkAnswer(5)"> 
    <area shape="rect" coords="0,470,190,240" alt="6" onclick="checkAnswer(6)"> 
    <area shape="rect" coords="191,470,380,240" alt="7" onclick="checkAnswer(7)"> 
    <area shape="rect" coords="381,470,570,240" alt="8" onclick="checkAnswer(8)"> 
    <area shape="rect" coords="571,470,760,240" alt="9" onclick="checkAnswer(9)"> 
    <area shape="rect" coords="761,470,941,689" alt="10" onclick="checkAnswer(10)"> 
    <area shape="rect" coords="0,490,190,689" alt="11" onclick="checkAnswer(11)"> 
    <area shape="rect" coords="191,490,380,689" alt="12" onclick="checkAnswer(12)"> 
    <area shape="rect" coords="381,490,570,689" alt="13" onclick="checkAnswer(13)"> 
    <area shape="rect" coords="571,490,760,689" alt="14" onclick="checkAnswer(14)"> 
    <area shape="rect" coords="761,490,941,689" alt="15" onclick="checkAnswer(15)"> 

</map> 

</body> 
</html> 
+0

使所有文字變爲粗體不會使其更具可讀性。錯誤信息是什麼意思?它指向哪條代碼? – Blender

+0

對不起。我真的是新的HTML,實際上昨天開始。我不知道有可能像Python一樣糾正它。我現在嘗試http://infohound.net/tidy/,但它說沒有錯誤。 –

+0

打開你的JS控制檯(Chrome中的Ctrl + Shift + J,我不知道Firefox和Firebug)看看錯誤。他們應該指向生成它們的代碼行。 – Blender

回答

-1

如果它確實只在項目#9發生的事情,它表明我的一些型號的經文串問題。

首先將變量名稱'id'更改爲其他名稱,該名稱可能會導致問題。

然後用var聲明它的頂部,就像你用cobras數組做的一樣。

我會將'id'更改爲一個字符串,並使用parseInt轉換Math函數的結果。

將您在數組中給出的索引值更改爲字符串,以便它們成爲鍵。

然後在區域標籤的checkAnswer調用中給出的值周圍添加單引號。

不能保證這會解決問題,但至少您肯定知道隨機項目和所選項目都是字符串。

+0

'Math.floor'返回一個整數,'checkAnswer'傳遞一個整數,所以比較是在兩個整數之間完成的。此外,對象上的屬性名稱會自動轉換爲字符串,所以'array ['1']'和'array [1]'指向相同的元素。 – Blender

+0

我試過更改「id」的名稱並使用var之前(雖然我已經讀過,如果它在全局範圍內沒有必要)。沒有改變。而checkAnswer周圍的單引號是以前的問題,已經通過將它們取出來解決了,所以.. –