JS—DOM—元素创建的不同方式—三种方式,5个案例

By | 2019年12月9日

元素创建—–为了提高用户的体验

 

元素创建的三种方式:

1. document.write("标签的代码及内容");
2. 对象.innerHTML="标签及代码";
3. document.createElement("标签的名字");

 

 

1. document.write("标签的代码及内容");

 
    my$("btn").onclick = function () {
      document.write("<p>这是一个标签</p>");
    };

 

案例1:用documnet.write嵌入外部的代码内容(例子:百度新闻码)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style type=text/css>
    div {
      font-size: 12px;
      font-family: arial
    }

    .baidu {
      font-size: 14px;
      line-height: 24px;
      font-family: arial
    }

    a, a:link {
      color: #0000cc;
    }

    .baidu span {
      color: #6f6f6f;
      font-size: 12px
    }

    a.more {
      color: #008000;
    }

    a.blk {
      color: #000;
      font-weight: bold;
    }</style>
</head>
<body>

<script language="JavaScript" type="text/JavaScript"
        src="http://news.baidu.com/ns?word=x%20title%3Aiphone&tn=newsfcu&from=news&cl=2&rn=5&ct=0"></script>
</body>
</html>

 

2. 对象.innerHTML="标签及代码";

 
    //点击按钮,在div中创建一个p标签
    //第二种方式创建元素: 对象.innerHTML="标签代码及内容";

    my$("btn").onclick = function () {
      my$("dv").innerHTML = "<p>床前明月光 疑是地上霜,举头望明月,低头思故乡</p>"
    };

 

案例2:点击按钮,在div中创建一个图片

  <input type="button" value="来个图片" id="btn" />
  <div id="dv"></div>

  <script src="common.js"></script>

  <script>
    my$("btn").onclick = function () {
      my$("dv").innerHTML = "<img src='images/liuyan.jpg' alt='美女' />";
    };
  </script>

 

案例3:点击按钮创建列表,鼠标移过改变背景颜色

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div {
      width: 250px;
      height: 350px;
      background-color: pink;
    }
  </style>
</head>

<body>
  <input type="button" value="创建列表" id="btn" />
  <div id="dv"></div>
  <script src="common.js"></script>
  <script>

    var names = ["杨过", "郭靖", "张无忌", "张三丰", "乔峰", "令狐冲"]
    var str = "<ul style='list-style-type:none;cursor:pointer'>";
    my$("btn").onclick = function () {
      //根据循环创建对应对数的li
      for (var i = 0; i < names.length; i++) {
        str += "<li>" + names[i] + "</li>";
      }
      str += "</ul>";
      my$("dv").innerHTML = str;

      //代码执行到这里,li已经有了
      //获取所有的li,遍历,添加鼠标进入事件,鼠标离开事件
      var list = my$("dv").getElementsByTagName("li");
      for (var i = 0; i < list.length; i++) {
        list[i].onmouseover = function () {
          this.style.backgroundColor = "hotpink";
        };
        list[i].onmouseout = function () {
          this.style.backgroundColor = "";
        };
      }
    };
  </script>
</body>

</html>

 

3. document.createElement("标签的名字");

创建元素:document.createElement("标签名字");对象
把元素追加到父级元素中
点击按钮,在div中创建一个p
 
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div {
      width: 200px;
      height: 150px;
      border: 1px solid pink;
    }
  </style>
</head>

<body>
  <input type="button" value="创建p" id="btn" />
  <div id="dv"></div>
  <script src="common.js"></script>
  <script>
    my$("btn").onclick = function () {
      //创建元素
      var pObj = document.createElement("p");
      pObj.innerText = ("这是一个p");
      // setInnerText(pObj, "这是一个p");
      //把创建后的子元素追加到父级元素中
      my$("dv").appendChild(pObj);
    };

  </script>
</body>

</html>

 

案例4:点击按钮,动态的创建列表,鼠标滑过高亮

如果是循环的方式添加事件,推荐用命名函数

如果不是循环的方式添加事件,推荐使用匿名函数

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    div {
      width: 200px;
      height: 400px;
      border: 2px solid pink;
    }

    ul {
      list-style-type: none;
      cursor: pointer;
    }
  </style>
</head>

<body>
  <input type="button" value="创建动态列表" id="btn" />
  <div id="dv"></div>
  <!-- <input type="button" value="创建列表" id="btn"/>
<div id="dv"></div> -->
  <script src="common.js"></script>
  <script>
    //点击按钮动态的创建列表,把列表加到div中
    var kungfu = ["降龙十八掌", "黯然销魂掌", "葵花宝典", "九阴真经", "吸星大法", "如来神掌", "化骨绵掌", "玉女心经"];

    my$("btn").onclick = function () {
      //创建ul,把ul立刻加入到父级元素div中
      var ulObj = document.createElement("ul");
      my$("dv").appendChild(ulObj); //追加子元素
      //动态的创建li,加到ul中
      for (var i = 0; i < kungfu.length; i++) {
        var liObj = document.createElement("li");
        //设置li中间的文字内容
        liObj.innerHTML = kungfu[i];
        ulObj.appendChild(liObj);
        //为li添加鼠标进入和离开事件
        liObj.onmouseover = mouseoverHandle;
        liObj.onmouseout = mouseoutHandle;
      }
    };

    //此位置.按钮的点击事件的外面
    function mouseoverHandle() {
      this.style.backgroundColor = "hotpink";
    }
    function mouseoutHandle() {
      this.style.backgroundColor = "";
    }

  // 如果是循环的方式添加事件,推荐用命名函数
  // 如果不是循环的方式添加事件,推荐使用匿名函数

  </script>
</body>

</html>

 

案例5:点击按钮创建一个表格

自己给自己debug好久,才发现没有把创建的2个列放进for循环

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div {
      width: 300px;
      height: 300px;
      border: 2px solid hotpink;
    }
  </style>
</head>

<body>
  <input type="button" value="创建表格" id="btn" />
  <div id="dv"></div>

  <script src="common.js"></script>
  <script>
    var arr = [
      { name: "百度", href: "http://www.baidu.com" },
      { name: "谷歌", href: "http://www.google.com" },
      { name: "优酷", href: "http://www.youku.com" },
      { name: "土豆", href: "http://www.tudou.com" },
      { name: "快播", href: "http://www.kuaibo.com" },
      { name: "爱奇艺", href: "http://www.aiqiyi.com" }
    ];

    //点击按钮创建表格
    my$("btn").onclick = function () {
      //创建table加入div
      var tableObj = document.createElement("table");
      tableObj.border = "1";
      tableObj.cellPadding = "0";
      tableObj.cellSpacing = "0";
      my$("dv").appendChild(tableObj);
      //创建行tr,加入table
      for (var i = 0; i < arr.length; i++) {
        var dt = arr[i]; //每个对象
        var trObj = document.createElement("tr");
        tableObj.appendChild(trObj);
        //创建第一个列,加入到行
        var td1 = document.createElement("td");
        td1.innerText = dt.name;
        trObj.appendChild(td1);

        //创建第二个列,加入到行
        var td2 = document.createElement("td");
        td2.innerHTML = "<a href=" + dt.href + ">" + dt.name + "</a>";
        trObj.appendChild(td2);
      }
    };

  </script>
</body>

</html>

 

 

发表评论