HTML-функция вызова JavaScript при загрузке

0

Я хочу сделать что-то вроде:

1. 1296
2. 4624

Square root both numbers and add the result! 
Answer: ________
[Check button]

и откройте somewhere.html если ответ правильный

Я сделал этот скрипт:

<html>
<head>
    <script language="javascript">
        window.onload=calc; 

        function calc() {
            var num1, num2, sqNum1, sqNum2, randomNum, sum, ans;
            num1=Math.floor(Math.random()*90)+10;
            num2=Math.floor(Math.random()*90)+10;
            sqNum1=num1*num1;
            sqNum2=num2*num2;
            sum=num1+num2;
            document.write("1. " + sqNum1 + "<br />");
            document.write("2. " + sqNum2 + "<br />");
            document.write("<br />");
        }

        function checkAns(form) {
            if (form.ans.value==sum) {
                location="somewhere.html";
            } else {
                alert ("Wrong answer!");
            }
        }
    </script>
</head>

<body>
    Square root both numbers and add the result! <br />
    <form name='question'>
        Answer: <input name='ans' type='password'> <br />
        <input type='button' value='Check' onClick='checkAns(this.form)'>
    </form>
</body>
</html>

Что бы я ни пытался, он никогда не отображает эту часть:

Square root both numbers and add the result! 
Answer: ________
[Check button]

Что не так с этим скриптом?

Теги:

2 ответа

-1
Лучший ответ

Вам нужно что-то вроде этого:

<html>
<head>
    <script language="javascript">
        function calc() {
            var num1, num2, sqNum1, sqNum2, randomNum, sum, ans;
            num1=Math.floor(Math.random()*90)+10;
            num2=Math.floor(Math.random()*90)+10;
            sqNum1=num1*num1;
            sqNum2=num2*num2;
            sum=num1+num2;
            document.getElementById("sum").value = sum;

            var question = document.getElementById("question");
            var numbers = document.getElementById("numbers");
            var br = document.createElement('br');
            var txt = document.createTextNode("1. " + sqNum1);
            numbers.appendChild(txt);
            numbers.appendChild(br);
            var txt = document.createTextNode("2. " + sqNum2);
            numbers.appendChild(txt);
            txt.appendChild(question);
        }

        function checkAns(form) {

            if (document.getElementById("ans").value == document.getElementById("sum").value) {
                var newWin = open('somewhere.html','windowName','height=300,width=300');
            } else {
                alert ("Wrong answer!");
            }
        }
    </script>
</head>

<body onload="calc();">
    <form name='question'>
        <div id="numbers">
        </div>
        <br/>
        Square root both numbers and add the result! <br />
        <div id="question">
            Answer: <input id='ans' name='ans' type='password'> <br />
            <input type='button' value='Check' onClick='checkAns(this.form)'>
        </div>
        <input id='sum' type='hidden' value=''/>
    </form>
</body>
</html>

Это не лучший ответ, это один из способов, которым вы можете воспользоваться, чтобы следить за развитием

  • 0
    Вывод правильный, но функция все еще не работает должным образом, она не проверяла ответ после нажатия кнопки. в любом случае, спасибо за сценарий, который может помочь мне понять объяснение Квентина
  • 0
    Извините, я думаю, что вам нужно только загрузить цифры, я не видел функцию checkAns. Я проверю эту часть
Показать ещё 1 комментарий
5

К моменту load функции load документ находится в закрытом состоянии.

Вы не можете write в документ в закрытом состоянии, поэтому вызов для write будет open для вас.

Вызов open будет уничтожить существующий документ.

Новый контент записывается в новый документ.

Используйте DOM-манипуляцию (createElement, appendChild и друзей) для редактирования существующего документа.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню