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

时间:2013-10-14 18:27:48

标签: javascript text input quotes

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

4 个答案:

答案 0 :(得分:3)

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

所以你传入的是一个带有id而不是字符串的DOM元素。这就是IDin.value有效的原因。

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

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

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

答案 1 :(得分:0)

function inchestocm(IDin,IDcm){     var inches = IDin.value;     var centimeters = inches * 2.54;     document.getElementById(IDcm).value =厘米; }

newheight是DOM元素<input type="text" id="newheight" onchange="inchestocm(newheight,'newheightcm')">,因为您的代码中没有使用该名称定义变量,请查看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">

答案 2 :(得分:0)

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

答案 3 :(得分:0)

你正在使用函数的参数,这就是为什么你不能使用双引号。如果你使用id的直接名称,那么将使用双引号。

相关问题