【问题标题】:If statement for when an array has no value (Javascript + HTML)数组没有值时的 if 语句(Javascript + HTML)
【发布时间】:2017-09-29 08:32:49
【问题描述】:

我有一个输入框,将各种文本存储到一个数组中,它显示在另一个页面上,但是当数组中没有值时,我希望页面显示“无事件”

这是将数组附加到页面的 javascript

function getEvents(){

//get the localstorage from the new event page
events = JSON.parse(localStorage.getItem("events"));

for (var i = 0; i < events.length; i++)
{

    if (events === "undefined" || null || "") {
        document.getElementById("none").innerHTML = "No events";        
    } else {
    // title output
    var title = document.createElement("h1"); //creates h1 element
    var titleText = document.createTextNode(events[i].name); //assigns title 
text
    title.appendChild(titleText); //appends text to h1
    document.getElementById("output").appendChild(title); //appends to the 
page

    // date output
    var date = document.createElement("p"); //creates p element
    var dateText = document.createTextNode(events[i].date);  //assigns date 
text
    date.appendChild(dateText); //appends text to p
    document.getElementById("output").appendChild(date); //appends to the page
    }
}
}

这是事件加载器页面上的 html

<body onload="getEvents()">

    <!-- Title -->
    <center>
        <h1>My Events</h1>
    </center>

    <p id="none"></p>
    <div id="output">
    </div>
</body>

【问题讨论】:

  • 如果events 数组中没有任何内容,那么您的for 循环将根本不会运行。我认为这就是这里发生的事情。
  • 基本上你应该在循环的else部分循环。
  • if(events === "undefined" || null || ""){document.getElementById("none").innerHTML = "No events";}else{for(){} }

标签: javascript html arrays if-statement getelementbyid


【解决方案1】:

您正在遍历数组,因此您应该测试数组元素而不是数组本身。如果没有数组,您的 for 循环甚至都不会运行。所以在循环范围内对数组本身运行测试的 if 基本没有意义。

您可以在进入循环之前以这种方式进行:

 if (events.length == 0)
 document.getElementById("none").innerHTML = "No events";        

【讨论】:

    【解决方案2】:
    • 将 if 语句从 for 循环中取出
    • 为 OR 子句使用正确的语法
    • 正确测试未定义
    • 同时测试长度 == 0

    if (toString.call(events) == "undefined" || events.length == 0) {
        document.getElementById("none").innerHTML = "No events";        
    } else {
        for(){/*...*/}
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 2022-07-07
      • 1970-01-01
      相关资源
      最近更新 更多