обработчики событий javascript onclick не работают должным образом - PullRequest
0 голосов
/ 12 октября 2010

По какой-то причине мои обработчики событий javascript onclick не работают должным образом.

Вот моя разметка, скрипт и стиль:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Quadratic Root Finder</title>

<script>
document.ready = function() {
    document.getElementById('calculate').onClick.calculateQuad()
    {
        var inputa = document.getElementById('variablea').value;
        var inputb = document.getElementById('variableb').value;
        var inputc = document.getElementById('variablec').value;

        root = Math.pow(inputb,2) - 4 * inputa * inputc;
        root1 = (-inputb + Math.sqrt(root))/2*inputa
        root2 = (-inputb + Math.sqrt(root))/2*inputa 

        document.getElementById('root1').value = root1;
        document.getElementById('root2').value = root2;
        if(root<'0')
        {
            alert('This equation has no real solution.')
        }
        else {
            if(root=='0')
            {
                document.getElementById('root1').value = root1
                document.getElementById('root2').value = 'No Second Answer'
            }
            else {
                document.getElementById('root1').value = root1
                document.getElementById('root2').value = root1
                }
            }
    };
    document.getElementById('erase').onClick.document.getElementById('form1').reset();
}
</script>

<style>
#container
{
    text-align: center;
}
</style>

</head>

<body>
<div id="container">
<h1>Quadratic Root Finder!</h1>
<form id="form1">
    a:<input id="variablea" value="" type="text">
    <br/>
    b:<input id="variableb" value="" type="text">
    <br />
    c:<input id="variablec" value="" type="text">
    <br />
    <input id="calculate" value="Calculate!" type="button">
    <input id="erase" value="Clear" type="button">
    <br />
    <br />
    Roots:
    <br />
    <input id="root1" type="text" readonly>
    <br />
    <input id="root2" type="text" readonly>
</form>
</div>
</body>
</html>

Есть ли объяснимая причина?

Ответы [ 4 ]

3 голосов
/ 12 октября 2010

Это неправильно
document.getElementById('calculate').onClick.calculateQuad()
Должно быть
document.getElementById('calculate').onClick = function ()

И это тоже неправильно
document.getElementById('erase').onClick.document.getElementById('form1').reset();
Крепление:
document.getElementById('erase').onClick = function(){document.getElementById('form1').reset();}

1 голос
/ 12 октября 2010
.onClick.document.getElementById('form1').reset()

Я думаю, вы хотите превратить это в:

.onclick = function () { document.getElementById('form1').reset(); }
1 голос
/ 12 октября 2010

Нет такого "готового" события, как это.Если вы хотите сделать что-то, что обычно называют «готовым» моментом, вам нужно использовать фреймворк.В противном случае вы можете использовать «onload» вместо «ready».

Если, например, вы используете jQuery, вы сделаете это:

$(function() {
    var inputa = document.getElementById('variablea').value;
    var inputb = document.getElementById('variableb').value;
    var inputc = document.getElementById('variablec').value;
    // etc ...
});

Без этого выd do:

window.onload = function() {
  // all your stuff
};

Также:

 ... .onclick.calculateQuad() {

не имеет никакого смысла.

0 голосов
/ 12 октября 2010

, если вы можете использовать Jquery

$ (документ) .ready (функция () { $ ( "# Variablea"). Нажмите (функция (элемент) { ///....operation }); });

вы можете использовать $ ("input"). Click (function (element) {}) управлять всеми элементами ввода

...