首页 > 解决方案 > 使用 Javascript 数组创建 HTML 表

问题描述

解析给定的数组(使用 JavaScript)并创建一个 HTML 表

我想根据域分离电子邮件 ID 数组并将它们显示在 html 表中。我已经尝试了以下代码,但它在 if 条件下不起作用。请帮我解决这个问题或替代解决方案

----------    
    <script>
        // var email ="test@gmail.com"
        //  var domain = email.replace(/.*@/," ");
        //  alert(domain);

        var d1 = "gmail.com"
        var d2 = "hotmail.com"
        var d3 = "yahoo.com"
        var email =[" test@gmail.com", "test@hotmail.com" , "test@yahoo.com"];
        var i;
        // var domain = email.replace(/.*@/," ");
        var text = "";
        for(i=0;i<email.length;i++){
            var dom = email[i].replace(/.*@/," ");
            if(dom[i]==d1){
              // text += email[i] + "<br>";

              // document.getElementById("demo").innerHTML = text;
              document.write("hii hello");
            }
            // else if(dom == "hotmail.com"){
      //         // text += email[i] + "<br>";

      //         // document.getElementById("demo").innerHTML = text;
      //         document.write("hii");
            // }
            // else if(dom == "yahoo.com"){
      //         // text += email[i] + "<br>";

      //         // document.getElementById("demo").innerHTML = text;
      //         document.write("swax");
            // }
            else{
                document.write(dom);        }
        }
        // document.getElementById("demo").innerHTML = text;
        </script>

标签: javascript

解决方案


。代替(/。*@/,” ”);

您应该用空字符串替换

.replace(/.*@/,"");

顺便说一句,真的不推荐使用 document.write()。为了帮助你,我快速编写了这个片段作为你的起点(没有判断,我几乎没有测试过):

  function createTable(rows) {
    const table = document.createElement('table');
    for (row of rows) {
      const tr = document.createElement('tr');
      for (column of row) {
        const td = document.createElement('td');
        td.appendChild(document.createTextNode(column));
        tr.appendChild(td);
      }
      table.appendChild(tr);
    }
    document.body.appendChild(table);
  }
  const emails = [
    'test0@gmail.com', 'test0@hotmail.com', 'test0@test.com',
    'test1@gmail.com', 'test1@hotmail.com', 'test1@test.com',
  ];
  const split = [[], [], []];
  emails.forEach(email => {
    switch (email.split('@')[1]) {
      case 'gmail.com': split[0].push(email); break;
      case 'hotmail.com': split[1].push(email); break;
      default: split[2].push(email)
    }
  });
  createTable(split);

问候,文森特


推荐阅读