我想要有一个值(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(正如名称所示),我认为这是你想要使用的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top