簡體   English   中英

我什么時候需要document.getElementByID的引號?

[英]When do I need quotes for document.getElementByID?

我有一個簡單的腳本,將英寸的文本輸入轉換為厘米的另一個文本輸入。 但是,當我將它傳遞給我的函數時,我注意到我必須為傳遞給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 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"> 
<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的直接名稱,那么將使用雙引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM