【问题标题】:When do I need quotes for document.getElementByID?我什么时候需要 document.getElementByID 的引号?
【发布时间】:2013-10-22 09:39:16
【问题描述】:

我有一个简单的脚本,它将英寸的文本输入转换为厘米的另一个文本输入。但是,当我将它传递给我的函数时,我注意到我必须为传递给 document.getElementByID 的参数使用引号。我尝试了不带引号的 newheightcm ,但失败了。有没有办法避免这种情况以保持两个参数的一致性,即两者都有引号或都没有引号?

<script>
function inchestocm(IDin, IDcm) {   
    var inches = IDin.value;
    var centimeters = inches*2.54;  
    document.getElementById(IDcm).value = centimeters;  
}
</script>
<input type="text" id="newheight" onchange="inchestocm(newheight,'newheightcm')">
<input type="text" id="newheightcm">

【问题讨论】:

  • 只有在将字符串文字直接传递给document.getElementByID时才需要引号。

标签: javascript text input quotes


【解决方案1】:

因为没有引号,您正在寻找在全局范围内定义的变量newheight。有些浏览器会做坏事,并说如果我没有具有此 id 的变量,我会查找具有该 id 的 DOM 元素。

因此,您传入的是具有该 id 而不是字符串的 DOM 元素。这就是IDin.value 起作用的原因。

更好的方法是传入被更改元素的范围。

<input type="text" id="newheight" onchange="inchestocm(this,'newheightcm')">

这样一来,您就无需处理使代码首先运行的浏览器怪癖。

【讨论】:

    【解决方案2】:
    函数英寸tocm(IDin,IDcm){ var 英寸 = IDin.value; var 厘米 = 英寸*2.54; document.getElementById(IDcm).value = 厘米; }

    newheight 是 DOM 元素 &lt;input type="text" id="newheight" onchange="inchestocm(newheight,'newheightcm')"&gt;,因为您的代码中没有使用该名称定义变量,请查看 epascarello 的答案

    您可以检查您的代码为

    <script>
    function inchestocm(IDin, IDcm) { 
        IDin = document.getElementById(IDin);
        var inches = IDin.value;
        var centimeters = inches*2.54;  
        document.getElementById(IDcm).value = centimeters;  
    }
    </script>
    <input type="text" id="newheight" onchange="inchestocm('newheight','newheightcm')">
    <input type="text" id="newheightcm">
    

    【讨论】:

      【解决方案3】:
      <input type="text" id="newheight" onchange="inchestocm(newheight,'newheightcm')">
      

      在您的代码中,两个参数是不同的,第一个是您试图从中获取值的对象,第二个是您想要粘贴结果的字符串。 不确定,但试试这个。

      <script>
      function inchestocm(IDin, IDcm) {   
      var inches = IDin.value;
      var centimeters = inches*2.54;  
      IDcm.value = centimeters;  
      }
      </script>
      <input type="text" id="newheight" onchange="inchestocm(newheight,document.getElementById('newheightcm'))">
      <input type="text" id="newheightcm">
      

      【讨论】:

        【解决方案4】:

        您正在使用函数的参数,这就是您不能使用双引号的原因。如果您使用 id 的直接名称,则将使用双引号。

        【讨论】:

          猜你喜欢
          • 2019-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-06
          • 2010-09-21
          • 2018-02-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多