I have a simple script which converts a text input of inches into another text input of centimeters. However, when I pass it to my function, I noticed that I have to use quotes for the argument passed to document.getElementByID. I tried newheightcm without quotes and it failed. Is there a way to avoid this to maintain consistency for both arguments, ie both have quotes or both have no quotes?
<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">
Because without the quotes you are looking for a variable newheight
that is defined in the global scope. Some browsers do a bad thing and says if I do not have a variable with this id, I look for an DOM element that has that id.
So what you are passing in is an DOM Element with that id and not a string. That is why IDin.value
works.
A better way of doing that is to pass in the scope of the element that was changed.
<input type="text" id="newheight" onchange="inchestocm(this,'newheightcm')">
That way you are not dealing with the browser quirk that made the code run in the first place.
newheight
is the DOM element <input type="text" id="newheight" onchange="inchestocm(newheight,'newheightcm')">
as there is no variable defined in your code with that name, check epascarello's answer
You can checnge your code as
<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')">
In your code, both arguments are different, first one is an object from where ur trying to get the value and second one is string where u want to paste the result. Not sure but try this ones.
<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的直接名称,那么将使用双引号。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.