《JavaScript DOM 编程艺术》读书笔记
2016-06-16 10:25
381 查看
《JavaScript DOM 编程艺术》读书笔记——其五
第七章
1、innerHTML属性
2、DOM方法
3、JavaScript图片库二次改进版:
test.html:
test.js:
test.css:
4、JavaScript图片库截图:
第七章
1、innerHTML属性
使用innerHTML属性,可以把JavaScript代码从标记中分离出来,即不用在标记的<body>部分插入<script>标签。 举例: (1)test.html: <div id="testdiv"> <p>This is <em>my</em> content.</p> </div> test.js: //显示id值为testdiv的innerHTML属性值 //即显示:<p>This is <em>my</em> content.</p> window.onload = function() { var testdiv = document.getElementById("testdiv"); alert(testdiv.innerHTML); } innerHTML属性无细节,要想获得细节,要使用DOM方法和属性 (2)test.html: <div id="testdiv"> </div> test.js: window.onload = function() { var testdiv = document.getElementById("testdiv"); testdiv.innerHTML = "<p>I inserted <em>this</em> content.</p>"; } 使用innerHTML属性后,testdiv元素内的HTML内容均被替换。
2、DOM方法
(1)createElement方法:创建一个新元素节点。 举例: var para = document.createElement("p"); 注:此时创建的p元素虽然已经存在,但它并非任何一个DOM节点树的组成部分,只是游荡在JS里的文档碎片,还无法显示在浏览器的窗口画面里。不过它已有了自己的DOM属性(一个nodeType和一个nodeName值)。 (2)appendChild方法:使新创建的节点元素成为要插入的节点元素的一个子节点。 举例: var testdiv = document,getElementById("testdiv"); testdiv.appendChild(para); 注:此时的p元素现已成为testdiv元素的一个子节点,被插入到test.html文档的节点树中。 (3)createTextNode方法:创建一个文本节点。 举例: var txt = document.createTextNode("Hello world!"); para.appendChild(txt); 完整代码举例(为testdiv元素插入一段文本): window.onload = function() { var para = document.createElement("p"); var testdiv = document,getElementById("testdiv"); testdiv.appendChild(para); var txt = document.createTextNode("Hello world!"); para.appendChild(txt); } (4)insertBefore方法:把一个新元素插入到一个现有元素的前面。 举例: var gallery = document.getElementById("imagegallery"); gallery.parentNode.insertBefore(placeholder,gallery); gallery.parentNode.insertBefore(description,gallery); 注:此例效果为JS图片库中图片(placeholder)与介绍文本段(description)插在图片清单(imagegallery)之前。 (5)在现有元素后插入一个新元素:编写insertAfter函数并使用。
3、JavaScript图片库二次改进版:
test.html:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test</title> <link rel="stylesheet" href="../css/JavaScript_DOM_编程艺术_test.css" media="screen" /> </head> <body> <h1>Snapshots</h1> <ul id="imagegallery"> <li> <a href="../img/1.jpeg" title="picture01"><img src="../img/1.jpeg" alt="Breakfast" width="120px" height="90px" /></a> </li> <li> <a href="../img/2.jpeg" title="picture02"><img src="../img/2.jpeg" alt="Sea" width="120px" height="90px" /></a> </li> <li> <a href="../img/3.jpeg" title="picture03"><img src="../img/3.jpeg" alt="Flower" width="120px" height="90px" /></a> </li> <li> <a href="../img/4.jpeg" title="picture04"><img src="../img/4.jpeg" alt="Tree" width="120px" height="90px" /></a> </li> <li> <a href="../img/5.jpg" title="picture05"><img 4000 src="../img/5.jpg" alt="Street" width="120px" height="90px" /></a> </li> <li> <a href="../img/6.jpeg" title="picture06"><img src="../img/6.jpeg" alt="Sky" width="120px" height="90px" /></a> </li> </ul> <script type="text/javascript" src="../js/JavaScript_DOM_编程艺术_test.js"></script> </body> </html>
test.js:
function addLoadEvent(func) { var oldonload = window.onload; if(typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } } addLoadEvent(preparePlaceholder); addLoadEvent(prepareGallery); function prepareGallery() { if(!document.getElementsByTagName) { return false; } if(!document.getElementById) { return false; } if(!document.getElementById("imagegallery")) { return false; } var gallery = document.getElementById("imagegallery"); var links = gallery.getElementsByTagName("a"); for(var i = 0 ; i < links.length ; i++) { links[i].onclick = function() { showPic(this); return !showPic(this); } } } function showPic(whichpic) { if(!document.getElementById("placeholder")) { return false; } var source = whichpic.getAttribute("href"); var placeholder = document.getElementById("placeholder"); placeholder.setAttribute("src",source); if(document.getElementById("description")) { var text = whichpic.getAttribute("title")?whichpic.getAttribute("title"):""; var description = document.getElementById("description"); description.firstChild.nodeValue = text; } return true; } //两个参数分别为将被插入的元素与目标元素 function insertAfter(newElement,targetElement) { var parent = targetElement.parentNode;//将目标元素的parentNode属性值保存在变量里 if(parent.lastChild == targetElement)//检查目标元素是否为parent最后一个子元素 { parent.appendChild(Element);//是,则把新元素插入到parent上 } 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","../img/2.jpeg"); placeholder.setAttribute("alt","my image gallery"); placeholder.setAttribute("style","width: 50%; height: 20%; margin-top: 20px;"); 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); }
test.css:
body { font-family:"Helvetica","Arial",serif; color: #333333; background-color: lightgoldenrodyellow; margin: 1em 10%; } h1 { color: #333333; background-color: transparent; } a { color: #c60; background-color: transparent; font-weight: bold; text-decoration: none; } ul { padding: 0; } li { float: left; padding: 1em; list-style: none; } #imagegallery { list-style: none; } #imagegallery li { display: inline; } #imagegallery li a img { border: 0; }
4、JavaScript图片库截图:
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 只需十分钟,结果大不同 |《深度思考》
- 2019年开发人员应该学习的8个JavaScript框架
- 《洋葱阅读法》读书笔记
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子