Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2011, 16:02
Новичок на форуме
Отправить личное сообщение для Remk Посмотреть профиль Найти все сообщения от Remk
 
Регистрация: 15.06.2011
Сообщений: 4

Кросс-браузерность JavaScript
Написан небольшой тест, в хроме работает великолепно, а в ИЕ выдает ошибки. Никак не могу разобраться, в чем ж причина. Помогите плиз =)

Вот пример первого вопроса. Картинки сюда заливать не стал, они не важны, помогите найти ошибку
<html>

<head>

<title>Пробный тест DIRECTUM</title>

</head>

<body>

<p><span style='font-size:12.0pt'><a href="rgiMaintask.aspx">К задачам</a></span>

<span style='font-size:10.0pt;margin-left: 85%'>



<script LANGUAGE="JavaScript">

    // Заголовок страницы (h1)

    var title = '<h2>Пробный тест DIRECTUM</h2>';

    var subtitle = "<h3>Вопрос 1</h3>";

    var questions = [

{

    text: "К Вам по электронной почте пришло письмо с вложенным документом Word. Вы хотите сохранить этот документ в DIRECTUM без потери форматирования.Что Вам необходимо сделать:",

    answers: ["Просто открыть документ из письма, при этом появится окно с предложением сохранить документ в DIRECTUM",

"Открыть письмо и выбрать пункт меню \"DIRECTUM/Сохранить вложение как документ\"",

"Открыть документ из письма, затем создать новый документ в DIRECTUM и внести в него текст полученного документа",

"Открыть документ из письма и нажать кнопку \"Сохранить\". Документ будет сохранен в DIRECTUM автоматически"],

    correctAnswer: 0 // нумерация ответов с нуля!

},

];





//Страница проверки результатов

var yourAns = new Array;

var score = 0;



function Engine(question, answer) { yourAns[question] = answer; }



function Score() {

 //<p><span style='font-size:12.0pt'><a href="rgiMaintask.aspx">К задачам</a></span>

    document.write('<h2>Пробный тест DIRECTUM</h2>');

    document.write('<h3>Вопрос 1</h3>');

    var questions = [

{

    text: "К Вам по электронной почте пришло письмо с вложенным документом Word. Вы хотите сохранить этот документ в DIRECTUM без потери форматирования.Что Вам необходимо сделать:",

    answers: ["<b><FONT color=\"green\">Просто открыть документ из письма, при этом появится окно с предложением сохранить документ в DIRECTUM</FONT></b>",

"<FONT color=\"red\">Открыть письмо и выбрать пункт меню \"DIRECTUM/Сохранить вложение как документ\"</FONT>",

"<FONT color=\"red\">Открыть документ из письма, затем создать новый документ в DIRECTUM и внести в него текст полученного документа</FONT>",

"<FONT color=\"red\">Открыть документ из письма и нажать кнопку \"Сохранить\". Документ будет сохранен в DIRECTUM автоматически</FONT>"],

    correctAnswer: 0 // нумерация ответов с нуля!

},

];





 for (var q = 0; q < questions.length; ++q) {

    var question = questions[q];

    var idx = 1 + q;



    document.writeln('<br/><li><b><span class="quest">' + question.text + '</span></b><br/><br/>');

    for (var i in question.answers) {

        document.writeln('<input type=radio name="q' + idx + '" value="' + i + '" onClick="Engine(' + q + ', this.value)">' + question.answers[i] + '<br/>');

    }

}



    var answerText = "Результаты:\n";

    for (var i = 0; i < yourAns.length; ++i) {

        var num = i + 1;

        answerText = answerText + "\n    Вопрос №" + num + "";

        if (yourAns[i] != questions[i].correctAnswer) {

            answerText = answerText + "\n    Правильный ответ: " +

		questions[i].answers[questions[i].correctAnswer] + "\n";

        }

        else {

            answerText = answerText + ": Верно! \n";

            ++score;

        }

    }



    answerText = answerText + "\nВсего правильных ответов: " + score + "\n";

    

    document.write(answerText);





    document.writeln('<br><img src="1.1.png" style="left: 1px; top: 1px; width: 600px; height: 400px;"    />');

    document.writeln('<img src="1.2.png"  style="left: 1px; top: 1px; width: 800px; height: 270px;"    />');

    document.writeln('<br><br><br><br><br><a href="2.aspx"><img border="0" id="img2" src="button.jpg" height="30" width="200" alt="" /></a>');

    yourAns = new Array;

    score = 0;



    clearForm("quiz");

}



function clearForm(name) {

    var f = document.forms[name];

    for (var i = 0; i < f.elements.length; ++i) {

        if (f.elements[i].checked)

            f.elements[i].checked = false;

    }

}







</script>



<style>

span.quest {font-weight: ;}

</style>



<h1><script>        document.write(title)</script></h1>

<h2><script>        document.write(subtitle)</script></h2>



<FORM name="quiz">



<script>

    for (var q = 0; q < questions.length; ++q) {

        var question = questions[q];

        var idx = 1 + q;



        document.writeln('<br/><li><b><span class="quest">' + question.text + '</span></b><br/><br/>');

        for (var i in question.answers) {

            document.writeln('<input type=radio name="q' + idx + '" value="' + i + '" onClick="Engine(' + q + ', this.value)">' + question.answers[i] + '<br/>');

        }

    }

</script>

</ol>





<input type=button onClick="Score()" value="Проверить результаты">

</FORM>



</body>

</html>
Ответить с цитированием
  #2 (permalink)  
Старый 15.06.2011, 16:42
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

У меня и ff остался недоволен. Полностью сказать, в чём причина, пока не могу, но, как минимум, не нужно вызывать форму по имени (устарело). Назначьте ей id-шник и вызывайте по нему. Меньше ошибок будет.

От write и тем более writeln (боже, как вы его нашли вообще!) лучше избавляться. Добавляйте элементы в дом с помощью специальных ф-ций, типа appendChild и insertBefore (читайте тут).
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)

Последний раз редактировалось trikadin, 15.06.2011 в 16:47.
Ответить с цитированием
  #3 (permalink)  
Старый 15.06.2011, 16:45
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

УЖАС!!!! дикий ужас, а не код.
Что за document.writeln?
И вообще зачем вам document.write?
И нельзя писать
function(){
document.write
}

И выкинте то учебник по которому вы учились, он устарел!
__________________
.
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2011, 16:49
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Skipp, я с вами всеми руками и ногами согласен) И будете смеяться - document.writeln действительно существует и работает! Я в шоке... Почитайте: http://javascript.itsoft.ru/methods/writeln.html
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2011, 16:56
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

trikadin,
да это я знаю, это было возмущение типа что за ...?
__________________
.
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2011, 17:02
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Remk, советую вам делать так или вроде того.

<form onsubmit="return test(this.test_sel)">
Вы знаете Javascript?

<select name="test_sel">
<option value="1" id="1"><label for="1">Нет</label>
<option value="2" id="2"><label for="2">Немного</label>
<option value="2" id="3"><label for="3">I am John Resig</label>
</select>
<input type="submit" value="Проверить">
</form>
<script>
function test(test) {
if (test.options[test.selectedIndex].value==1) alert("Вы правы")
else alert("Вы глубоко заблуждаетесь");
return false;
};
</script>


Как видите код ИЗРЯДНО сокращается и становится доступней для понимая. Под радиобаттоны переписывается легко. Не знаю, почему я под селекты сделал...

P.S. Skipp, а я впервые про writeln услышал. Я уж думал, человек как привык в pascal'е, так и пишет))
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)

Последний раз редактировалось trikadin, 15.06.2011 в 17:12.
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2011, 17:05
Новичок на форуме
Отправить личное сообщение для Remk Посмотреть профиль Найти все сообщения от Remk
 
Регистрация: 15.06.2011
Сообщений: 4

Дык я на С/С++ учусь =))) с явой не дружу, а тест делал кривовато) Нашел исходник теста, выцарапал только часть кода, типа функции просмотра ошибок результата и тд... остальное нарыл в порванном учебнике взятом с антрисоли... Я так и не понял это из-за document.write не работает в ИЕ?? он там ошибку пишет связанную с question.text) пишет что она NULL и не является объектом... при ее изменении и удалении , вообще не работает...

код сам по себе ужасный, согласен, но в связи с тем, что он нужен был вчера и обязательно нужен сегодня, у меня не было и нет времени доводить его до ума...а так как в код теста никто смотреть не будет, мне нужно чтоб только работал нормально)) Причем в ИЕ ибо человеку, которому я его писал не понравилось, что он работает только в хроме... Буду премного благодарен за помощь =) а особенно, если подскажете что откуда - на что и куда заменить))
Ответить с цитированием
  #8 (permalink)  
Старый 15.06.2011, 17:07
Новичок на форуме
Отправить личное сообщение для Remk Посмотреть профиль Найти все сообщения от Remk
 
Регистрация: 15.06.2011
Сообщений: 4

Дело в том, что каждый вопрос должен быть на новой страничке, и при выборе ответа, скрипт должен будет выделить правильный ответ зеленым цветом, а неправильный красным, сказать об этом пользователю написав об этом ниже, и вставить скрин из учебнкиа, где написана глава про эту дребедень))) это в общем обучающий тест, перед главным тестированием, как то так...
Ответить с цитированием
  #9 (permalink)  
Старый 15.06.2011, 17:10
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Я тоже на C/C++ в институте учился, теперь сам учу JavaScript и медленно забываю си, но совсем не жалею.
А уж решать ошибку точно не буду так как, чёрт ногу сломит, лучше напишите задачу, небось 2 секундное решение.

не, решение точно не 2 секундное
__________________
.

Последний раз редактировалось Skipp, 15.06.2011 в 17:18.
Ответить с цитированием
  #10 (permalink)  
Старый 15.06.2011, 17:24
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Remk, попробуйте сходить в раздел "Работа". За умеренную плату там помогут.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Книга] Stoyan Stefanov, Javascript Patterns Dmitry A. Soshnikov Учебные материалы 20 13.08.2013 11:37
javascript вставки в vrml сцены. Передать событие из броузера Proletariy Javascript под браузер 0 10.05.2011 12:26
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24