Я неправильно использую OnChange?
-
22-09-2019 - |
Вопрос
Я пытаюсь иметь ценность (key
) эти обновления соответствуют номеру в текстовом поле (angle
) разделено на значение (25
) Однако по какой -то причине changeMe
Функция, кажется, не выполняет. Я неправильно использую OnChange?
<script type="text/javascript">
function changeMe(x)
{
var y=document.getElementById(x).value;
y = (y/25);
y = (Math.round(y));
document.getElementById(key).value=y;
}
</script>
<form method="POST" action="">
Your Angle: <input type="text" name="angle" id="angle"
onchange="changeMe(this.id)" value="0"/>
Key: <span id="key">0</span><br />
</form>
Решение
Изменить линию
document.getElementById(key).value=y;
к
document.getElementById('key').innerHTML=y;
Другие советы
Чтобы увидеть, называется ли это, просто добавьте это в качестве первой строки:
alert("Hey, I'm being called!");
Теперь я уже вижу проблему здесь: в последней строке вашей функции вы делаете getElementById(key)
, но вы должны приложить key
с двойными цитатами. Если нет, то это считается переменной вместо строки.
А changeMe(this.id)
беспокоит меня, я использую, чтобы увидеть просто (this)
, но, лучший способ узнать, что происходит, - это использовать либо расширение веб -разработчика в IE8 (я нажимаю на F12, и он появляется), либо, предпочтительно, Firebug, на Firefox, а затем вы можете поставить в точку перерыва в Начало функции Чанема и посмотрите, что передается, так как может быть ошибка.
И два других уже упомянули о проблеме с вашим GetElementById.
Последняя строка document.getElementById(key)
должно быть document.getElementById("key")
.
Кстати, вы можете упростить это немало, передав <input>
Элемент напрямую вместо своего идентификатора:
<script type="text/javascript">
function changeMe(angle)
{
var key = document.getElementById("key");
key.innerHTML = Math.round(angle.value / 25);
}
</script>
<form method="POST" action="">
Your Angle: <input type="text" name="angle" id="angle"
onchange="changeMe(this)" value="0"/>
Key: <span id="key">0</span><br />
</form>
Попробуйте использовать предложение Джеймса Блэка, чтобы использовать onchange="changeMe(this)"
, ваша функция становится упрощенной
function changeMe(x) {
y = Math.round(x.value/25);
document.getElementById('key').innerHTML = y;
}
Обратите внимание на document.getElementById('key').innerHTML = y
, Это заменит внутренний HTML (как описывает имя), я думаю, это то, что вы хотели использовать.