0

我试图让一个值 ( 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>
4

5 回答 5

5

换行

document.getElementById(key).value=y;

document.getElementById('key').innerHTML=y;
于 2009-10-19T01:26:12.543 回答
1

要查看它是否被调用,只需将其添加为第一行:

alert("Hey, I'm being called!");

现在,我已经在这里看到了一个问题:在函数的最后一行,你正在做getElementById(key),但你应该key用双引号括起来。如果不是,则将其视为变量而不是字符串。

于 2009-10-19T01:19:57.303 回答
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>
于 2009-10-19T01:20:09.713 回答
1

changeMe(this.id)困扰我,我习惯于看到,(this)但是,了解正在发生的事情的最佳方法是使用 IE8 中的 Web Developer 扩展(我按 F12 并出现),或者最好使用 Firefox 上的 Firebug,然后你可以在changeMe函数的开头放一个断点,看看传入了什么,可能有错误。

另外两个已经提到了您的 getElementById 的问题。

于 2009-10-19T01:21:35.490 回答
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(如名称所述),我认为这就是您想要使用的。

于 2009-10-19T01:33:01.613 回答