《JavaScript DOM编程艺术》11:动态创建标记

这是《JavaScript学徒》系列的第十一课,今天会进入《JavaScript DOM编程艺术》第7章,我们会一起学习如何用JavaScript动态创建标记。动态的意思是,在程式运行中创建标记,而不是在运行前就已经写好在index.html里面。之前,我们学习的是如何用JavaScript操作那些已经写好在index.html中的标记,现在我们要用JavaScript直接创建标记。

本文同步发表于我的个人网站:

https://zacklive.com/javascript-dom-create-element/

教学视频连结

YouTube

微博

传统方法

传统方法方法不建议使用,只需大概了解一下,以便遇到时,知道是做什么的。

document.write

document.write("<p>This is inserted.</p>")

innerHTML

innerHTML既可以读取,也可以写入(赋值),但只能取得整体,不能取得里面的标记。

window.onload = function() {  var testdiv = document.getElementById("testdiv");  testdiv.innerHTML = "

I inserted this content.

";  alert(testdiv.innerHTML);}

DOM方法

createElement

var para = document.createElement("p");alert(para.nodeName + ", " + para.nodeType);

appendChild

var testdiv = document.getElementById("testdiv");var para = document.createElement("p");testdiv.appendChild(para);

CreateTextNode

var txt = document.createTextNode("Hello world");para.appendChild(txt);

insertBefore

var gallery = document.getElementById("iamgegallery");gallery.parentNode.insertBefore(placeholder, gallery);

要插入到gallery前面,那便是在其父元素底下进行。

insertAfter

JavaScript不提供,自己写:

function insertAfter(newElement, targetElement) {  var parent = targetElement.parentNode;  if (parent.lastChild == targetElement) {    parent.appendChild(newElement);  } else {    parent.insertBefore(newElement, targetElement.nextSibling);  }}

修改图片库例子

function addLoadEvent(func) {  var oldonload = window.onload;  if (typeof window.onload != 'function') {    window.onload = func;  } else {    window.onload = function() {      oldonload();      func();    }  }}function insertAfter(newElement, targetElement) {  var parent = targetElement.parentNode;  if (parent.lastChild == targetElement) {    parent.appendChild(newElement);  } else {    parent.insertBefore(newElement, targetElement.nextSibling);  }}function preparePlaceholder() {  if (!document.createElement) return false;  if (!document.createTextNode) return false;  if (!document.getElementById) return false;  if (!document.getElementById("imagegallery")) return false;  var placeholder = document.createElement("img");  placeholder.setAttribute("id", "placeholder");  placeholder.setAttribute("src", "https://via.placeholder.com/500x333");  placeholder.setAttribute("alt", "description");  var description = document.createElement("p");  description.setAttribute("id", "description");  var desctext = document.createTextNode("Choose an image");  description.appendChild(desctext);  var gallery = document.getElementById("imagegallery");  insertAfter(placeholder, gallery);  insertAfter(description, placeholder);}function prepareGallery() {  if (!document.getElementsByTagName ||      !document.getElementById ||      !document.getElementById("imagegallery")) return false;  var gallery = document.getElementById("imagegallery");  var links = gallery.getElementsByTagName("a");  for ( var i=0; i

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 归根结底,代码都是思想和概念的体现。没人能把一种程序设计语言的所有语法和关键字都记住,可以查阅参考书来解决。...
    朱细细阅读 8,172评论 4 14
  • 第七章 动态创建标记 document.write 方法: document.write(" xxxxxxx ")...
    小毛同学阅读 1,486评论 0 0
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,182评论 0 2
  • 本书在一些基础的JavaScript语法上,通过一个个小例子讲解了简单的dom操作,最后把例子综合起来做成一个网站...
    萨默塞特酱阅读 1,837评论 0 4
  • 重量ng=(n+1)*7kg20180224 核心训练 1h俯卧撑20/20/15/15/15/15仰卧收腹静...
    brickhum阅读 5,348评论 0 0

友情链接更多精彩内容