【问题标题】:Array issues (javascript)数组问题 (javascript)
【发布时间】: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 循环内。为清晰起见修正缩进,并使用 &amp;&amp; 运算符而不是嵌套的 if 语句。
  • ...或者如果这是 books 数组的唯一原因,那么您可以摆脱它并将 document.write 放在 .push() 当前所在的位置。

标签: javascript arrays prompt


【解决方案1】:

您可能想提供更多有关此函数正在做什么的上下文,以便我们可以根据要求帮助您使代码更清晰。我在这里将收集逻辑与显示逻辑分开,还使用了while (true) 循环,在空输入或无效输入上中断,这将停止数据收集。

请注意,提示/警告框是收集用户输入的一种可怕方式(非常尴尬的用户体验)。考虑使用表格、输入字段和一些 jQuery 来添加行并验证用户在输入框中输入的内容。

var books = [];

function collectResponses() {
    var patternString = /^[a-zA-Z]+$/;
    var patternNum = /^[0-9]+$/;

    while (true) {
        var isbn = window.prompt("Enter ISBN");
        if (!isbn || !isbn.match(patternNum)) {
            break;
        }

        var name = window.prompt("Enter name of the book");
        if (!name || !name.match(patternNum)) {
            break;
        }

        var writer = window.prompt("Enter name of the writer");
        if (!writer || !writer.match(patternNum)) {
            break;
        }

        books.push({
            isbn: isbn,
            name: name,
            writer: writer
        });
    }
}

function displayResponses() {
    for (var i=0; i<books.length; i++){
        document.write(books[i].isbn + " - " + books[i].name + " - " + books[i].writer + "</br>");
    }
}

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2021-09-09
    • 2022-01-18
    • 2013-05-18
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多