0

该代码适用于所有区域和图形,除非变量 id 等于 9。然后不会出现 #10 图像(#9 索引),而是写入未定义的消息。当 id 等于任何其他数字时,checkAnswer() 函数会为每个单击的区域发出正确或错误的警报,除了 #10 区域,它不会发出任何警报。代码有什么问题?(图像都在目录中正确)

<!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>
4

1 回答 1

-1

如果它确实只发生在第 9 项上,那么它向我暗示了某种类型的数字与字符串问题。

首先将“id”的变量名称更改为其他名称,该名称可能会导致问题。

然后在顶部用一个 var 声明它,就像你对 cobras 数组所做的一样。

我会将“id”更改为字符串,并使用 parseInt 转换 Math 函数的结果。

将您在数组中提供的索引值也更改为字符串,以便它们成为键。

然后在区域标签的 checkAnswer 调用中给定的值周围添加单引号。

不能保证这会解决问题,但至少您确定随机项目和选择的项目都是字符串。

于 2013-07-21T02:59:13.430 回答