【发布时间】:2017-03-25 20:45:02
【问题描述】:
我创建了一个小函数来存储图书 isbn、名称和作者。一切都很好,直到我开始打印出数组。在将对象完成为数组的每个输入上,我希望它在新行中一个接一个地打印,但是每次插入新对象时,这个都是从头开始打印对象。我该如何解决这个问题?
var books = [];
function blaBla(){
while(isbn != null || name != null || writer != null){
var isbn = window.prompt("Enter ISBN");
var name = window.prompt("Enter name of the book");
var writer = window.prompt("Enter name of the writer");
var patternString = /^[a-zA-Z]+$/;
var patternNum = /^[0-9]+$/;
if(isbn.match(patternNum)){
if(name.match(patternString)){
if(writer.match(patternString)){
books.push({
isbn: isbn,
name: name,
writer: writer
});
}
}
}
for (var i=0; i<books.length; i++){
document.write(books[i].isbn + " - " + books[i].name + " - " + books[i].writer + "</br>");
}
}
}
PS:如何让它更“干净”,所以当我在提示符下点击取消时,它会自动停止向数组中输入数据,而如果我在“writer”提示符下停止它,它会删除以前的条目对于那个对象(最后一个 isbn 和这本书的姓氏)? 提前致谢。
【问题讨论】:
-
您进行写入的
for循环位于仍在累积数组的while循环内。为清晰起见修正缩进,并使用&&运算符而不是嵌套的if语句。 -
...或者如果这是
books数组的唯一原因,那么您可以摆脱它并将document.write放在.push()当前所在的位置。
标签: javascript arrays prompt