代码之家  ›  专栏  ›  技术社区  ›  waiwai933

我使用onchange是否不正确?

  •  0
  • waiwai933  · 技术社区  · 15 年前

    我在努力获得价值( 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>
    
    5 回复  |  直到 15 年前
        1
  •  5
  •   Tomas Markauskas    15 年前

    换行

    document.getElementById(key).value=y;
    

    document.getElementById('key').innerHTML=y;
    
        2
  •  1
  •   Seb    15 年前

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

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

    现在,我已经在这里看到了一个问题:在函数的最后一行,您正在执行 getElementById(key) ,但您应该附上 key 带双引号。如果不是,它将被视为变量而不是字符串。

        3
  •  1
  •   James Black    15 年前

    这个 changeMe(this.id) 打扰我了,我习惯了看 (this) 但是,了解正在发生的事情的最好方法是使用IE8中的Web开发人员扩展(我按F12,它会出现),或者最好是在Firefox上使用Firebug,然后您可以在changeme函数的开头插入一个断点,查看传入的内容,因为可能存在错误。

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

        4
  •  1
  •   MusiGenesis    15 年前

    最后一行 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>
    
        5
  •  0
  •   MusiGenesis    15 年前

    试着用詹姆斯·布莱克的建议 onchange="changeMe(this)" ,你的功能变得简单了

    function changeMe(x) {
        y = Math.round(x.value/25);
        document.getElementById('key').innerHTML = y;
    }
    

    注意到 document.getElementById('key').innerHTML = y ,这将替换内部HTML(如名称所述),我认为这是您想要使用的。