题
我想要有一个值(key
)的更新与在文本框(angle
)的数对应由值(25
)划分。然而,出于某种原因,该changeMe
功能似乎并没有被执行。我使用的平变化是否有误?
<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 Web开发扩展(我按F12,它出现),或最好, Firebug的,在Firefox,然后你可以把一个破发点在changeMe函数的开始,看看在过去,因为有可能是一个错误。
和已经提到说说你的getElementById问题的另外两个。
最后一行document.getElementById(key)
应document.getElementById("key")
。
顺便说可以通过使<input>
元件,而不是直接将其ID的简化此公平位:
<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(正如名称所示),我认为这是你想要使用的东西。
不隶属于 StackOverflow