2013-07-21 3 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 (Ctrl + Shift + J в Chrome, я не знаю об Firefox с Firebug) и беру Посмотрите на ошибки. Они должны указывать на строку кода, которая сгенерировала их. – Blender

ответ

-1

Если это действительно происходит только по пункту № 9, он предлагает мне какой-то тип номера стихи проблемы строки.

Сначала измените имя переменной 'id' на что-то другое, это имя может вызвать проблемы.

Затем объявите его сверху с помощью var, так же, как вы делаете с массивом кобр.

Я бы сменил 'id' на строку и преобразовал результат функции Math с помощью parseInt.

Измените значения индекса, которые вы передаете в массиве, на строки, поэтому вместо этого они становятся ключами.

Затем добавьте одинарные кавычки вокруг значения, указанного в вызовах checkAnswer из тегов области.

Не гарантируется, что это устранит проблему, но, по крайней мере, вы точно знаете, что случайный элемент и выбранный элемент - все строки.

+0

'Math.floor' возвращает целое число, а' checkAnswer' передается целое число, поэтому сравнение выполняется между двумя целыми числами. Кроме того, имена свойств объектов автоматически преобразуются в строки, поэтому 'array ['1']' и 'array [1]' указывают на один и тот же элемент. – Blender

+0

Я попытался изменить имя «id» и использовать var раньше (хотя я читал, что это было необязательно, если оно было в глобальной области). Ничего не изменилось. И одиночные кавычки вокруг checkAnswer были предыдущей проблемой, которая была исправлена, вынимая их, поэтому .. –

Смежные вопросы