函数与表单上的if / else语句

时间:2016-11-15 15:54:13

标签: forms function if-statement getelementbyid

我是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;
}
}

1 个答案:

答案 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");