我正在尝试将值(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>
答案 0 :(得分:5)
更改行
document.getElementById(key).value=y;
到
document.getElementById('key').innerHTML=y;
答案 1 :(得分:1)
要查看是否正在调用它,只需将其添加为第一行:
alert("Hey, I'm being called!");
现在,我已经在这里看到了一个问题:在您的函数的最后一行,您正在执行getElementById(key)
,但是您应该使用双引号括起key
。如果没有,它被视为变量而不是字符串。
答案 2 :(得分:1)
最后一行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>
答案 3 :(得分:1)
changeMe(this.id)
困扰我,我只是看到(this)
,但是,知道发生了什么的最好方法是使用IE8中的Web Developer扩展(我按F12和它出现在Firefox上,或者最好是Firebug,然后你可以在changeMe函数的开头放入一个断点,看看传入了什么,因为可能有错误。
其他两个人已经提到了你的getElementById问题。
答案 4 :(得分:0)
尝试使用James Black的建议来使用onchange="changeMe(this)"
,您的功能变得简化
function changeMe(x) {
y = Math.round(x.value/25);
document.getElementById('key').innerHTML = y;
}
注意document.getElementById('key').innerHTML = y
,这将替换内部html(如名称所示),我认为这就是你想要使用的。