Есть ошибка в коде, но не могу ее найти
Переделывала код и понимаю, что где-то в нем есть ошибка. Но где не могу найти?
<head>
<title>test</title>
</head>
<body>
<div style="margin-top: 10px;">
<div id="area" class="wrapper1">
<button id="start" class="myBut" onclick="check(countQuest)">Пройти тест</br>"Художники и окружение"</button>
<center>
<img src="111.jpg" id="img111">
<p id="question"></p>
<ul style="list-style-type:none;">
<li><button onclick="check(0)" id="option1"><name="answers" ><span></span> </li>
<li><button onclick="check(1)" id="option2"><name="answers" > <span></span> </li>
<li><button onclick="check(2)" id="option3"><name="answers" > <span></span> </li>
</ul>
</center>
<div id="rez"></div>
</div>
</div>
document.getElementsByTagName("center")[0].style.display = "none";
var questions = ["1. На одной из последних работ Эдуарда Мане была изображена строящеяся Эйфелева башня",
"2. Детство Поля Гогена прошло в Перу","3. Хаим Сутин, Юдаль Пэн, Марк Шагал, Леон Бакст, Валентин Волков, Язэп Дроздович - все эти художники родились на территории современной Беларуси",
"4. На одной из самых больших картин мира \"Явление Христа народу\", Александр Иванов одного из персонажей написал с Гоголя", "5. Дега любил писать балерин, Моне пруды и кувшинки, а кого называли \"художником воды\""];
var number1 = ["Нет, такой картины у него нет", "Нет,он родился и детство провел в Париже. В экзотических странах он жил уже только в зрелом возрасте","Да, все эти выдающиеся художники родились на территории Беларуси", "Да, он очень дружил с Гоголем и попросил его позировать для картины", "Альфред Сислей"];
var number2 = ["Да, но это была одна из его ранних картин","Да, и это возможно и повлияло на его творческого мирооощущение","Нет, Валентин Волков и Леон Бакст родились за пределами современной Беларуси", "Нет, так как этот персонаж есть на его набросках еще до того, как он познакомился с писателем", "Камиль Писсарро"];
var number3 = ["Да, конечно, Мане писал башню, как Моне вокзал Сен-Лазар","Нет, его детство прошло в Чили","Нет, Валентин Волков и Юдаль Пэн родились за пределами современной Беларуси", "На картине нет персонажа похожего на Гоголя, да и Иванов не был с ним даже знаком", "Фредерик Базиль"];
var answer = [0,1,2,1,0];
var countQuest = 0;
var plus = 0;
var images = [];
for (var i=1; i<=5; i++ ) {
images[i]= document.createElement("img");
images[i].src = "11"+i+".jpg";
};
function check(num){
if (num == 0)
{
document.getElementsByTagName("center")[0].style.display = "block";
}
if(num == answer[countQuest]) plus++;
if (countQuest == questions.length)
{
document.getElementsByTagName("center")[0].style.display = "none";
rez.innerHTML = rez.innerHTML + "<br/>Правильных ответов:" + plus +" из 5";
}
else
{
document.getElementById('question').innerHTML = questions[countQuest];
document.getElementById('option1').getElementsByTagName("span")[0].innerHTML = number1[countQuest];
document.getElementById('option2').getElementsByTagName("span")[0].innerHTML = number2[countQuest];
document.getElementById('option3').getElementsByTagName("span")[0].innerHTML = number3[countQuest];
document.getElementById('img').src[i] = images[countQuest];
countQuest++;
}
|
Darya_kod,
Какие тебе ошибки консоль выводит? Цитата:
Цитата:
|
Да, действительно, извините, не очень верно сформулировала свой вопрос. Указывает ошибку в 45 строчке и есть ошибка в подсчете правильных ответов, т.е они подсчитываются, но не верно. И тут я не могу понять, что не так!
|
Darya_kod,
Ты осознай и напиши сюда, что ты хочешь добиться этой строкой? В чем её назначение?
document.getElementById('img').src[i] = images[countQuest];
|
В этой строке я хочу вызвать по id элемент "картинка" и потом по продвижению по вопросам ее менять.
|
Darya_kod,
Короче смотри 1) Сделай массив не элементов img (как у тебя), а строк url (ну src) 2) Прикол в том, будет один img которому будешь прописывать разные src
document.getElementById('укажи id img').src = images[countQuest];
|
Правильно ли я вас поняла?
<head>
<title>test</title>
</head>
<body>
<div style="margin-top: 10px;">
<div id="area" class="wrapper1">
<button id="start" class="myBut" onclick="check(countQuest)">Пройти тест</br>"Художники и окружение"</button>
<center>
<img src="111.jpg" id="111.jpg">
<p id="question"></p>
<!-- <button onclick="check(0)" class="myButton" id="option1" hidden></button> </br>
<button onclick="check(1)" class="myButton" id="option2" hidden></button> </br>
<button onclick="check(2)" class="myButton" id="option3" hidden></button> </br>-->
<ul style="list-style-type:none;">
<li><button onclick="check(0)" id="option1"><name="answers" ><span></span> </li>
<li><button onclick="check(1)" id="option2"><name="answers" > <span></span> </li>
<li><button onclick="check(2)" id="option3"><name="answers" > <span></span> </li>
</ul>
</center>
<div id="rez"></div>
</div>
</div>
document.getElementsByTagName("center")[0].style.display = "none";
//Массив вопросов
var questions = ["1. На одной из последних работ Эдуарда Мане была изображена строящеяся Эйфелева башня",
"2. Детство Поля Гогена прошло в Перу","3. Хаим Сутин, Юдаль Пэн, Марк Шагал, Леон Бакст, Валентин Волков, Язэп Дроздович - все эти художники родились на территории современной Беларуси",
"4. На одной из самых больших картин мира \"Явление Христа народу\", Александр Иванов одного из персонажей написал с Гоголя", "5. Дега любил писать балерин, Моне пруды и кувшинки, а кого называли \"художником воды\""];
//Массивы вариантов ответов
var number1 = ["Нет, такой картины у него нет", "Нет,он родился и детство провел в Париже. В экзотических странах он жил уже только в зрелом возрасте","Да, все эти выдающиеся художники родились на территории Беларуси", "Да, он очень дружил с Гоголем и попросил его позировать для картины", "Альфред Сислей"];
var number2 = ["Да, но это была одна из его ранних картин","Да, и это возможно и повлияло на его творческого мирооощущение","Нет, Валентин Волков и Леон Бакст родились за пределами современной Беларуси", "Нет, так как этот персонаж есть на его набросках еще до того, как он познакомился с писателем", "Камиль Писсарро"];
var number3 = ["Да, конечно, Мане писал башню, как Моне вокзал Сен-Лазар","Нет, его детство прошло в Чили","Нет, Валентин Волков и Юдаль Пэн родились за пределами современной Беларуси", "На картине нет персонажа похожего на Гоголя, да и Иванов не был с ним даже знаком", "Фредерик Базиль"];
//Массив правильных ответов
var answer = [0,1,2,1,0];
var countQuest = 0;
var plus = 0;
//var images = [];
var Im = [
{src: '111.jpg'},
{src: '112.jpg'},
{src: '113.jpg'},
{src: '114.jpg'},
{src: '115.jpg'}
];
for (var i=0; i<=5; i++) {
Im[i].img = new Image();
Im[i].img.src = Im[i].src;
};
/*for (var i=1; i<=5; i++ ) {
images[i]= document.createElement("img");
images[i].src = "11"+i+".jpg";
}; */
function check(num){
if (num == 0)
{
document.getElementsByTagName("center")[0].style.display = "block";
}
if(num == answer[countQuest]) plus++;
if (countQuest == questions.length)
{
document.getElementsByTagName("center")[0].style.display = "none";
rez.innerHTML = rez.innerHTML + "<br/>Правильных ответов:" + plus +" из 5";
}
else
{
document.getElementById('question').innerHTML = questions[countQuest];
document.getElementById('option1').getElementsByTagName("span")[0].innerHTML = number1[countQuest];
document.getElementById('option2').getElementsByTagName("span")[0].innerHTML = number2[countQuest];
document.getElementById('option3').getElementsByTagName("span")[0].innerHTML = number3[countQuest];
document.getElementById('111.jpg').src = images[countQuest];
countQuest++;
}
}
|
Darya_kod,
Не создавай изображения как элементы! Просто сделай массив урлов! Просто массив строк. Строк. У тебя будет на странице один элемент img с нормальным id="question-image" и у этого img ты будешь менять .src = .. Зачем ты задаешь id как имя файла? |
Darya_kod,
В исходном сообщении в строке 45 кода у вас идёт обращение к элементу по ID="img" причём как к массиву элементов с таким тэгом - через индекс [i]: document.getElementById('img').src[i] = images[countQuest]; Как мне кажется здесь 2 ошибки: во-первых может быть только один (id уникальны), поэтому индекс [i] не нужен, во вторых, где такой элемент в коде (с таким ID)? Может стоит обращаться .getElementsByTagName("img") тогда возможна индексация по номеру элемента через [i], но индекс i для 45 строки тоже вроде нигде не задан. Значение неопределено. PS Может я что-то не до конца понял (я сам пока только изучаю язык), но мне видятся такие ошибки. |
Переделала, но что-то не так
<head>
<title>test</title>
</head>
<body>
<div style="margin-top: 10px;">
<div id="area" class="wrapper1">
<button id="start" class="myBut" onclick="check(countQuest)">Пройти тест</br>"Художники и окружение"</button>
<center>
<img src="111.jpg" id="question-image">
<p id="question"></p>
<!-- <button onclick="check(0)" class="myButton" id="option1" hidden></button> </br>
<button onclick="check(1)" class="myButton" id="option2" hidden></button> </br>
<button onclick="check(2)" class="myButton" id="option3" hidden></button> </br>-->
<ul style="list-style-type:none;">
<li><button onclick="check(0)" id="option1"><name="answers" ><span></span> </li>
<li><button onclick="check(1)" id="option2"><name="answers" > <span></span> </li>
<li><button onclick="check(2)" id="option3"><name="answers" > <span></span> </li>
</ul>
</center>
<div id="rez"></div>
</div>
</div>
document.getElementsByTagName("center")[0].style.display = "none";
//Массив вопросов
var questions = ["1. На одной из последних работ Эдуарда Мане была изображена строящеяся Эйфелева башня",
"2. Детство Поля Гогена прошло в Перу","3. Хаим Сутин, Юдаль Пэн, Марк Шагал, Леон Бакст, Валентин Волков, Язэп Дроздович - все эти художники родились на территории современной Беларуси",
"4. На одной из самых больших картин мира \"Явление Христа народу\", Александр Иванов одного из персонажей написал с Гоголя", "5. Дега любил писать балерин, Моне пруды и кувшинки, а кого называли \"художником воды\""];
//Массивы вариантов ответов
var number1 = ["Нет, такой картины у него нет", "Нет,он родился и детство провел в Париже. В экзотических странах он жил уже только в зрелом возрасте","Да, все эти выдающиеся художники родились на территории Беларуси", "Да, он очень дружил с Гоголем и попросил его позировать для картины", "Альфред Сислей"];
var number2 = ["Да, но это была одна из его ранних картин","Да, и это возможно и повлияло на его творческого мирооощущение","Нет, Валентин Волков и Леон Бакст родились за пределами современной Беларуси", "Нет, так как этот персонаж есть на его набросках еще до того, как он познакомился с писателем", "Камиль Писсарро"];
var number3 = ["Да, конечно, Мане писал башню, как Моне вокзал Сен-Лазар","Нет, его детство прошло в Чили","Нет, Валентин Волков и Юдаль Пэн родились за пределами современной Беларуси", "На картине нет персонажа похожего на Гоголя, да и Иванов не был с ним даже знаком", "Фредерик Базиль"];
//Массив правильных ответов
var answer = [0,1,2,1,0];
var countQuest = 0;
var plus = 0;
//var images = [];
var Im = ['111.jpg','112.jpg','113.jpg','114.jpg','115.jpg'];
for (var i=0; i<=5; i++) {
Im[i].img.src = Im[i].src;
};
function check(num){
if (num == 0)
{
//при первом входе делаем видимыми наши вопрос-ответы
document.getElementsByTagName("center")[0].style.display = "block";
}
if(num == answer[countQuest]) plus++;
if (countQuest == questions.length)
{ //вывод результата
//делаем отображение вопросов-ответов невидимыми при выводе результата
document.getElementsByTagName("center")[0].style.display = "none";
rez.innerHTML = rez.innerHTML + "<br/>Правильных ответов:" + plus +" из 5";
}
else
{//вывод текущих вопросов
document.getElementById('question').innerHTML = questions[countQuest];
document.getElementById('option1').getElementsByTagName("span")[0].innerHTML = number1[countQuest];
document.getElementById('option2').getElementsByTagName("span")[0].innerHTML = number2[countQuest];
document.getElementById('option3').getElementsByTagName("span")[0].innerHTML = number3[countQuest];
document.getElementById('question-image').src = images[countQuest];
countQuest++;
}
}
|
Darya_kod, у тебя подход к хранению данных дюже "слабенький"... :(
Тут желательно иметь какую-то общую структуру. Как вариант...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
var obj=[
{
question: "На одной из последних работ Эдуарда Мане была изображена строящеяся Эйфелева башня",
answer: [
"Нет, такой картины у него нет",
"Нет,он родился и детство провел в Париже. В экзотических странах он жил уже только в зрелом возрасте",
"Да, все эти выдающиеся художники родились на территории Беларуси",
"Да, он очень дружил с Гоголем и попросил его позировать для картины",
"Альфред Сислей"
],
correct: 0,
img: '111.jpg'
},
{
question: "Детство Поля Гогена прошло в Перу",
answer: [
"Да, но это была одна из его ранних картин",
"Да, и это возможно и повлияло на его творческого мирооощущение",
"Нет, Валентин Волков и Леон Бакст родились за пределами современной Беларуси",
"Нет, так как этот персонаж есть на его набросках еще до того, как он познакомился с писателем",
"Камиль Писсарро"
],
correct: 1,
img: '112.jpg'
},
{
question: "Хаим Сутин, Юдаль Пэн, Марк Шагал, Леон Бакст, Валентин Волков, Язэп Дроздович - все эти художники родились на территории современной Беларуси",
answer: [
"Да, конечно, Мане писал башню, как Моне вокзал Сен-Лазар",
"Нет, его детство прошло в Чили",
"Нет, Валентин Волков и Юдаль Пэн родились за пределами современной Беларуси",
"На картине нет персонажа похожего на Гоголя, да и Иванов не был с ним даже знаком",
"Фредерик Базиль"
],
correct: 2,
img: '113.jpg'
},
{
question: "На одной из самых больших картин мира \"Явление Христа народу\", Александр Иванов одного из персонажей написал с Гоголя",
answer: [],
correct: 1,
img: '114.jpg'
},
{
question: "Дега любил писать балерин, Моне пруды и кувшинки, а кого называли \"художником воды\"",
answer: [],
correct: 0,
img: '115.jpg'
}
];
</script>
</head>
<body>
</body>
</html>
|
Да, ваш вариант выглядит хорошо! Но я уже перепробовала несколько вариантов хранения, а проблема заключается в том, что я никак не могу заставить их (картинки) меняться!
|
Darya_kod, скорее всего тебе в раздел "Работа"... Назови свою цену, может и найдутся желающие сделать тебе программку.
|
Нет, мне не надо делать работу. Я просто спрашивала в чем ошибка. А не как написать код!
|
Цитата:
|
Вот тот пример, который я уже выкладывала выше. По очень дельным советам наших комментаторов я его подправила. И просто хочу понять, в чем тут нестыковка. Почему картинки не меняются.
Либо под тестовым вы имели ввиду что-то иное?
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<div style="margin-top: 10px;">
<div id="area" class="wrapper1">
<button id="start" class="myBut" onclick="check(countQuest)">Пройти тест</br>"Художники и окружение"</button>
<center>
<img src="111.jpg" id="question-image">
<p id="question"></p>
<!-- <button onclick="check(0)" class="myButton" id="option1" hidden></button> </br>
<button onclick="check(1)" class="myButton" id="option2" hidden></button> </br>
<button onclick="check(2)" class="myButton" id="option3" hidden></button> </br>-->
<ul style="list-style-type:none;">
<li><button onclick="check(0)" id="option1"><name="answers" ><span></span> </li>
<li><button onclick="check(1)" id="option2"><name="answers" > <span></span> </li>
<li><button onclick="check(2)" id="option3"><name="answers" > <span></span> </li>
</ul>
</center>
<div id="rez"></div>
</div>
</div>
//делаем отображение вопросов-ответов невидимыми при входе
document.getElementsByTagName("center")[0].style.display = "none";
//Массив вопросов
var questions = ["1. На одной из последних работ Эдуарда Мане была изображена строящеяся Эйфелева башня",
"2. Детство Поля Гогена прошло в Перу","3. Хаим Сутин, Юдаль Пэн, Марк Шагал, Леон Бакст, Валентин Волков, Язэп Дроздович - все эти художники родились на территории современной Беларуси",
"4. На одной из самых больших картин мира \"Явление Христа народу\", Александр Иванов одного из персонажей написал с Гоголя", "5. Дега любил писать балерин, Моне пруды и кувшинки, а кого называли \"художником воды\""];
//Массивы вариантов ответов
var number1 = ["Нет, такой картины у него нет", "Нет,он родился и детство провел в Париже. В экзотических странах он жил уже только в зрелом возрасте","Да, все эти выдающиеся художники родились на территории Беларуси", "Да, он очень дружил с Гоголем и попросил его позировать для картины", "Альфред Сислей"];
var number2 = ["Да, но это была одна из его ранних картин","Да, и это возможно и повлияло на его творческого мирооощущение","Нет, Валентин Волков и Леон Бакст родились за пределами современной Беларуси", "Нет, так как этот персонаж есть на его набросках еще до того, как он познакомился с писателем", "Камиль Писсарро"];
var number3 = ["Да, конечно, Мане писал башню, как Моне вокзал Сен-Лазар","Нет, его детство прошло в Чили","Нет, Валентин Волков и Юдаль Пэн родились за пределами современной Беларуси", "На картине нет персонажа похожего на Гоголя, да и Иванов не был с ним даже знаком", "Фредерик Базиль"];
//Массив правильных ответов
var answer = [0,1,2,1,0];
var countQuest = 0;
var plus = 0;
//var images = [];
var Im = ['111.jpg','112.jpg','113.jpg','114.jpg','115.jpg'];
for (var i=0; i<=5; i++) {
Im.img.src = Im.src;
};
function check(num){
if (num == 0)
{
//при первом входе делаем видимыми наши вопрос-ответы
document.getElementsByTagName("center")[0].style.display = "block";
}
if(num == answer[countQuest]) plus++;
if (countQuest == questions.length)
{ //вывод результата
//делаем отображение вопросов-ответов невидимыми при выводе результата
document.getElementsByTagName("center")[0].style.display = "none";
rez.innerHTML = rez.innerHTML + "<br/>Правильных ответов:" + plus +" из 5";
}
else
{//вывод текущих вопросов
document.getElementById('question').innerHTML = questions[countQuest];
document.getElementById('option1').getElementsByTagName("span")[0].innerHTML = number1[countQuest];
document.getElementById('option2').getElementsByTagName("span")[0].innerHTML = number2[countQuest];
document.getElementById('option3').getElementsByTagName("span")[0].innerHTML = number3[countQuest];
document.getElementById('question-image').src = images[countQuest];
countQuest++;
}
}
|
Цитата:
Это можно назвать неработающей задачкой в целом. На данный момент у тебя есть полностью не работающая задачка с плохим хранением данных... И ты пытаешься выспрашивать о мелких неработающих деталях. Это тебе ничего не даст. :no: Нужно либо по маленьким проблемам писать отдельные тестовые примеры... Либо сразу брать нормальное хранение данных и шаг за шагом делать задачку целиком. Т.е. на фигне ты ничего нормально не построишь. :no: |
Так, хорошо, сейчас я больше поняла про проблему! Спасибо
|
Цитата:
Где в твоем коде (по твоему мнению) идет "смена картинок"? По какому событию она происходит? |
Есть цикл, он пару раз видоизменялся и я честно запуталась: (там есть счетчик, ограничение, то что цикл действует 5 раз, т.к. 5 вопросов и обращение к массиву картинок)
вот варианты циклов:
for (var i=0; i<=5; i++) {
Im.img.src = Im.src;
};
for (var i=1; i<=5; i++ ) {
Im[i]= document.createElement("img");
Im[i].src = "11"+i+".jpg";
};
for (var i=0; i<=5; i++) {
Im[i].img.src = Im[i].src;
};
И второе
document.getElementById('question-image').src = images[countQuest];
здесь мы вызываем элемент по id и получается, что говорим менять их по мере смены вопросов. Я, наверно, косо это рассказываю, но я так понимаю. |
Цитата:
Начнем с того, что цикл сразу (!) отрабатывает с начала и до конца. И только потом браузер получает управление дабы отобразить чего наделал тот скрипт... Теперь по частностям... Цитата:
Что это за элемент и чему равно то значение пока даже не рассматриваем. :) Поскольку само действо абсолютно бестолковое... Цитата:
Создает он их так же разом! Что будет потом с этими элементами типа "картинка" нам не ведомо... Цитата:
Вот это Im[i].img что за элемент такой? Поскольку без понимания оного и рассматривать больше нечего. :no: Все, выше описанное, дает мне право предполагать, что ты вообще мало понимаешь как JS так и ДОМ-модель в частности... Т.е. свою задачку самостоятельно тебе ну никак не решить... :no: |
KSA, спасибо вам за разбор) Буду анализировать вами сказанную информацию!
|
| Часовой пояс GMT +3, время: 13:43. |