Вопрос

Я пытаюсь иметь ценность (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 (как описывает имя), я думаю, это то, что вы хотели использовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top