我是JavaScript新手,所以这是我的学习项目之一,但经过大量研究后,我陷入困境。有人能告诉我哪里出错了吗?在第一个问题提交后,我似乎无法在第二个文本框中显示结果。这两个id在我的HTML中。
function myFunction(age1, level1) {
var age1 = document.getElementById("age").value;
var level1 = document.getElementById("level").value;
if (age1 <= 20) {
level1.value = 1;
}
else if(age1 <= 40) {
level1.value = 2;
}
else {
level1.value = 3;
}
}
答案 0 :(得分:0)
您将变量声明为函数参数以及函数本身。此外,您在变量声明中以及指向变量时都指向“值”。
这会导致问题。
如果我理解你要做的是什么,你应该从函数(x,y)中删除你的变量声明,只指向“value”一次:
function myFunction() {
var element1 = document.getElementById("age"); // removed value here
var element2 = document.getElementById("level"); // removed value here
if (element2.value <= 20) {
element1.value = 1;
}
else if(element2.value <= 40) {
element1.value = 2;
}
else {
element1.value = 3;
}
}
在这种情况下,您的变量实际上是“常量”。您希望每次都指向相同的html元素。在这种情况下,你只需在你需要的任何地方声明一个变量,就像你已经在做的那样(只要它们在scope中)
将函数置于函数参数中的一个原因是,您希望使函数“动态”并可重用。像这样
function myFunction(elementIdToCheck, elementIdToSelect) {
var elementToCheck = document.getElementById(elementIdToCheck);
var elementToSet = document.getElementById(elementIdToSelect);
if (elementToCheck.value <= 20) {
elementToSet.value = 1;
}
else if(elementToCheck.value <= 40) {
elementToSet.value = 2;
}
else {
elementToSet.value = 3;
}
}
myFunction("age", "level");