为什么将空值插入表中?

时间:2019-11-11 10:22:20

标签: javascript html

我想使用提示将名称和年龄插入HTML表。为什么在结果中插入空值?

var i = 0;
var n = new Array();
var a = new Array();
var name = " ",
  age = " ";

while (!(name == null || age == null)) {
  name = prompt("Enter name: ");
  age = prompt("Enter age: ");
  n[i] = name;
  a[i] = age;
  i++;
}

document.writeln("<table border='1' width='25%'>");
document.writeln("<caption>Arrays</caption>");
document.writeln("<th>Name</th><th>Age</th>");

for (var k in n) {
  if (!(k == null))
    document.writeln("<tr><td>" + n[k] + "</td><td>" + a[k] + "</td></tr>");
}
document.write("</table>");
<h2>JavaScript Arrays</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>

2 个答案:

答案 0 :(得分:1)

那是因为您正在检查提示前的空值。在提供姓名或年龄后使用条件。

while(true){
   name=prompt("Enter name: ");
   age=prompt("Enter age: ");
   if(name==null || age==null) break;
   n[i]=name;
   a[i]=age;
   i++;
}

答案 1 :(得分:0)

提示功能在取消/退出时返回null

这在MDN documentation of prompt中有解释。为避免在HTML表格中打印null,仅在存在的情况下才需要打印。

这是条件正确的代码:

var i = 0;
var n = new Array();
var a = new Array();
var name = " ",
  age = " ";

while (!(name == null || age == null)) {
  name = prompt("Enter name: ");
  age = prompt("Enter age: ");
  n[i] = name;
  a[i] = age;
  i++;
}

document.writeln("<table border='1' width='25%'>");
document.writeln("<caption>Arrays</caption>");
document.writeln("<th>Name</th><th>Age</th>");

for (var k in n) {
  if(n[k] !== null && a[k] !== null)
    document.writeln("<tr><td>" + n[k] + "</td><td>" + a[k] + "</td></tr>");
}
document.write("</table>");
<h2>JavaScript Arrays</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>