Javascript getElementById()。value返回未定义的输入元素[关闭]

问题描述 投票:1回答:1

我正在尝试制作一个小型Web应用程序,我需要从输入元素中获取值并将它们多次推送到数组中。

第一次执行此操作时,它返回undefined,第二次将第一个值推入x1和x2的次数,但不推第二个值。

[listentree是全局变量。

function winner()尚未被调用。

是的,在按下任何按钮之前,我确实在两个输入中都输入了内容。

var list = [];
var entree;

function addToList() {
  if (document.getElementById("Name")) {
    console.log("addToList triggered");
    entree = document.getElementById("Name").value
    for (i = 0; i < document.getElementById("Lose").value; i++) {
      list.push(entree);
    }
  }
}

function ausgeben() {
  for (j = 0; j < list.length; j++) {
    document.write(list[i] + " ");
  }
}
<label for="Name">Name</label>
<br>
<input type="text" name="Name" id="Name" maxlength="30">
<br>
<label for="Lose">Lose        </label>
<br>
<input type="Int" name="Lose" id="Lose" maxlength="40">
<br>
<button type="reset">Eingaben zurücksetzen</button>
<br>
<button onclick="addToList()">Eingaben absenden</button>
<button onclick="winner()">Los Ziehen</button>
<button onclick="ausgeben()">ausgeben</button>
javascript html dom input undefined
1个回答
1
投票

您在for循环中使用i而不是j,因此从undefined开始使用list[undefined]===undefined

var list=[], entree;
function addToList(){
    if(document.getElementById("Name")){
        console.log("addToList triggered");
        entree = document.getElementById("Name").value  
        for(i=0; i<document.getElementById("Lose").value; i++){
            list.push(entree);
        }
    }
}
function ausgeben(){
    for(j=0;j<list.length;j++){
    // you used i instead of j, hence "undefined"
        document.write(list[j] + " ");
    }
}
<label for="Name">Name</label> 
    <br>
    <input type="text" name="Name" id="Name" maxlength="30">
    <br>
    <label for="Lose">Lose        </label>  
    <br>
    <input type="Int" name="Lose" id="Lose" maxlength="40">
    <br>
    <button type="reset">Eingaben zurücksetzen</button>


<br>
<button onclick="addToList()">Eingaben absenden</button>
<button onclick="winner()">Los Ziehen</button>
<button onclick="ausgeben()">ausgeben</button>
© www.soinside.com 2019 - 2024. All rights reserved.