我什么时候需要 document.getElementByID 的引号

When do I need quotes for document.getElementByID?

本文关键字:getElementByID document 什么时候      更新时间:2023-09-26

我有一个简单的脚本,可以将英寸的文本输入转换为另一个厘米的文本输入。但是,当我将其传递给我的函数时,我注意到我必须为传递给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">

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

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

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

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

这样,您就不会处理首先使代码运行的浏览器怪癖。

function inchestocm(IDin, IDcm) { var 英寸 = IDin.value; VaR 厘米 = 英寸*2.54; document.getElementById(IDcm).value = cmimeters; }

newheight是 DOM 元素<input type="text" id="newheight" onchange="inchestocm(newheight,'newheightcm')">因为代码中没有定义具有该名称的变量,请检查 epascarel 的答案

您可以将代码修改为

<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">
<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">

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