2010-10-11 2 views
1

Я знаю, что это вопрос смущающий вопрос, но я не могу понять проблему, и именно поэтому я задаю вопрос, поэтому, пожалуйста, не повторяйте этот момент.Ошибка ввода ясного текстового поля JavaScript

В любом случае, я просто что-то работаю над этим, и когда я проверил свою страницу, чтобы узнать, как все происходит, я понял, что мой метод calculate() не очищает ввод текста, как я этого хочу.

Вот разметка и сценарий:

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Quadratic Root Finder</title> 
<script> 
function calculate(){ 
var valuea = document.form1.variablea.value; 
var valueb = document.form1.variableb.value; 
var valuec = document.form1.variablec.value; 
document.form1.variablea.value = ""; 
document.form1.variableb.value = ""; 
document.form1.variablec.value = ""; 
} 
</script> 
</head> 

<body> 
<form name="form1"> 
    a:<input name="variablea" value="" type="text"> 
    <br/> 
    b:<input name="variableb" value="" type="text"> 
    <br/> 
    c:<input name="variablec" value="" type="text"> 
    <br/> 
    <input name="calculate" value="Calculate!" type="button" onClick="calculate()"> 
</form> 
</body> 
</html> 

Скажите, пожалуйста, если вы видите что-нибудь.

ответ

2

Возможно, вы захотите попробовать использовать другое имя. Я попытался вызвать функцию «вычислять», но он продолжает давать мне ошибку, говоря «вычисление» не является функцией. Но когда я вызываю функцию «calculateQuad» и меняю событие onClick на вызов «calculateQuad», он работает.

+0

Эй, спасибо! Хорошая идея, возможно, «рассчитать» - это ключевое слово, зарезервированное имя или какая-либо терминология, используемая JS. Спасибо за это! :) Редактировать: проигнорируйте это, потому что ответ Кристиана показывает истинную причину. – Qcom

1

Не очень уверен, но если вы не хотите, чтобы перейти к JQuery вот что вы могли бы попробовать:

function calculate() { 
    var inputa = document.getElementById('inputa'); 
    inputa.value = ''; 
} 

Просто проверить это, имея ИД «InputA» на одном из полей ввода. Я знаю только, как получить элементы по id, имени или тегу в raw Js. Конечно, вы можете расширить свой код до того, что хотите, используя один из этих методов, чтобы получить элементы формы.

+0

Спасибо за 'getElementById', я забыл про самые простые вещи, черт возьми, намного проще, чем использовать другой метод. – Qcom

+0

no worries :) рад, что вы его разобрали – Claudiu

1

Внутри метода onclick есть ссылка на элемент, который вы нажали. Он называется так же, как имя, которое вы положили на элемент, «вычислить». Это приводит к тому, что «вычисление» относится не к функции, а к входному тегу.

Чтобы решить эту проблему либо набрав

onclick = "window.calculate()" 

или переименовать либо ввода тега или функции.

+0

любые документы/спецификации, объясняющие проблему? – Rajat

+0

OH! Я получил тебя, теперь имеет прекрасный смысл, не обращай внимания на мой комментарий по моему выбранному ответу. – Qcom

+0

@BOSS Пожалуйста, проверьте правильный ответ для всех. – Rajat

0

изменить название кнопки ввода на что-то другое:

<input name="calcul" value="Calculate!" type="button" onClick="calculate()"> 

и она работает. Поскольку функция вычисления находится непосредственно под глобальным объектом, у меня странное чувство, что ваш атрибут имени каким-то образом перезаписывает его.

Просто выбросьте это. Я буду глубже смотреть на то, почему это происходит.