在for循环中访问动态变量名称

时间:2018-11-04 09:12:53

标签: javascript

我有一个for循环“ tostring”迭代的基本问题。

说明:

  1. 有12个<input type="text">容器。
  2. 我想检测用户何时在12个容器中的任意3个容器中写入si字。
  3. 如果用户准确键入3次si,我会设置一个名为You made it!的警报。

问题:

  1. 该行最有可能是错误的:if(cube[i].includes("si"))
  2. 不确定如何仅检查si字的数量来检查for循环中的所有容器。 (在for循环的字符串中添加数字,以调用其他变量,例如cube1,cube2,cub3等)

任何帮助将不胜感激,谢谢:)

function transmute() {
  var cube1 = document.getElementById("cube_slot1").value;
  var cube2 = document.getElementById("cube_slot2").value;
  var cube3 = document.getElementById("cube_slot3").value;
  var cube4 = document.getElementById("cube_slot4").value;
  var cube5 = document.getElementById("cube_slot5").value;
  var cube6 = document.getElementById("cube_slot6").value;
  var cube7 = document.getElementById("cube_slot7").value;
  var cube8 = document.getElementById("cube_slot8").value;
  var cube9 = document.getElementById("cube_slot9").value;
  var cube10 = document.getElementById("cube_slot10").value;
  var cube11 = document.getElementById("cube_slot11").value;
  var cube12 = document.getElementById("cube_slot12").value;
  var counter = 0;

  for (var i = 1; i <= 12; i++) {
    if (cube[i].includes("si")) {
      counter += 1;
    }
  }
  if (counter == 3) {
    alert("You made it!");
  }
}

1 个答案:

答案 0 :(得分:3)

也许您可以简化方法,但是可以在for循环中迭代元素(通过动态id),并计算在输入值中发现si子字符串的情况。

如果遇到三个或更多情况,则显示alert(),然后从循环中提早中断:

function transmute() {
  
  for(var i = 1; i <= 12; i++) {

    var id = 'cube_slot' + i;
    var value = document.getElementById(id).value;
    
    if(value.includes('si')) {
      counter += 1;      
    }

    if(counter >= 3) {
      alert("You made it!");
      break
    }
  }
}