Функция JavaScript не может быть вызвана из-за проблем с областью действия - PullRequest
0 голосов
/ 12 октября 2010

Я собираюсь вызвать мою функцию clear() JS, чтобы очистить текстовые значения в некоторых полях ввода на моей веб-странице, но по некоторым причинам эта функция не вызывается правильно.Я полагаю, что это может быть scope проблема, но я не уверен.

Вот моя разметка, скрипт и стилизация, которые в настоящее время хранятся вместе для простоты использования, но будут исправленыпосле завершения сценариев:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Quadratic Root Finder</title>
<script>
function 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
            }
        }
}
function clear()
{
    document.getElementById('variablea').value = "";
    document.getElementById('variableb').value = "";
    document.getElementById('variablec').value = "";
}
</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" onClick="calculateQuad()">
    <input id="erase" value="Clear" type="button" onClick="clear()">
    <br />
    <br />
    Roots:
    <br />
    <input id="root1" type="text" readonly>
    <br />
    <input id="root2" type="text" readonly>
</form>
</div>
</body>
</html>

Ответы [ 2 ]

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

Вы должны переименовать метод clear. Попробуйте назвать его «clearFields» или что-то в этом роде. (;

Кроме того, если вы хотите сбросить только поля формы, вы также можете сделать это: OnClick = "this.form.reset ()"

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

Вы можете полностью избежать проблемы с именованием функций, используя:

document.getElementById("calculate").onclick = function () {
    ...
};

document.getElementById("erase").onclick = function () {
    ...
};

Это на самом деле предпочтительный метод добавления обработчиков событий веб-разработчиками, поскольку он позволяет избежать загромождения HTML-кода встроенными фрагментами JavaScript при сохранении кросс-браузерной совместимости.

...