#javascript #php
#javascript #php
Вопрос:
Моя программа предупреждает меня при первом запуске, и она не преобразует, когда я нажимаю кнопку «Рассчитать!». кнопка.
<div id="input">
<form method = "post" action = "hw07.php" name = "form">
Temperature: <input type="text" id="num" name="temperature"> <br />
<input type="radio" name="con" value="far" id="far"> Convert to Fahrenheit
<br />
<input type="radio" name="con" value="cel" id="cel"> Convert to Celcius
<br />
<input type="button" name="submit" value="Calculate!" id="submit">
</form>
</div>
<div id = "results"></div>
window.addEventListener("load", link_events, false);
function link_events() {
var temp = document.getElementById("num");
document.getElementById("submit").onclick = calculate(temp);
}
function calculate(temp) {
if(isNaN(temp)){
alert("Not numeric")
}
if (document.getElementById("far").checked) {
document.getElementById("results").innerHTML = "Temperature is"
Math.round(num-32)*5/9;
}
else if (document.getElementById("cel").checked){
document.getElementById("results").innerHTML = "Temperature is" Math.round(num*9/5) 32;
}
else
alert("choose a conversion");
return false;
}
Я хочу, чтобы она предупреждала меня, когда я нажимаю кнопку «Рассчитать!», а не при запуске программы. Ей нужно напечатать преобразованное значение, но она даже ничего не печатает atm.
Комментарии:
1. Есть ли у вас <script> … </script> в вашем javascript?
Ответ №1:
У вас есть несколько проблем в вашем коде.
Element.onclick
свойство должно быть функцией, а не значением результата функции- Чтобы получать правильный пересчет при каждом нажатии кнопки, вам нужно получить значение температуры из поля ввода внутри функции
calculate
(Также не забудьте проанализировать его в числовой тип, поскольку он имеет строковый тип) - Последняя — это таинственная
num
переменная, которая, очевидно, должна бытьtemp
Вся эта проблема решается в приведенном ниже коде. Надеюсь, это поможет.
window.addEventListener("load", link_events, false);
function link_events() {
document.getElementById("submit").onclick = calculate;
}
function calculate() {
var temp = Number(document.getElementById("num").value);
if (isNaN(temp)) {
alert("Not numeric")
return
}
if (document.getElementById("far").checked) {
document.getElementById("results").innerHTML = "Temperature is " Math.round(temp - 32) * 5 / 9;
} else if (document.getElementById("cel").checked) {
document.getElementById("results").innerHTML = "Temperature is " Math.round(temp * 9 / 5) 32;
} else {
alert("choose a conversion");
}
return;
}
<div id="input">
<form method = "post" action = "hw07.php" name = "form">
Temperature: <input type="text" id="num" name="temperature"> <br />
<input type="radio" name="con" value="far" id="far"> Convert to Fahrenheit
<br />
<input type="radio" name="con" value="cel" id="cel"> Convert to Celcius
<br />
<input type="button" name="submit" value="Calculate!" id="submit">
</form>
</div>
<div id = "results"></div>
Ответ №2:
just remove this line
window.addEventListener("load", link_events, false);
and change the link_events function
function link_events() {
var temp = document.getElementById("num");
calculate(temp.value);
}
and add onClick event to button
<input type="button" name="submit" value="Calculate!" id="submit" onclick="link_events()">
also i corected this function
function calculate(temp) {
if (isNaN(temp)) {
alert("Not numeric")
}
if (document.getElementById("far").checked) {
document.getElementById("results").innerHTML = "Temperature is"
Math.round(temp - 32) * 5 / 9;
}
else if (document.getElementById("cel").checked) {
document.getElementById("results").innerHTML = "Temperature is" Math.round(temp * 9 / 5) 32;
}
else
alert("choose a conversion");
return false;
}
num is not a variable should be temp in Math.round()