javascript权威指南-脚本化文档-上
作者:gcbeen
日期:2013年11月05日
一、属性
var image = document.getElementById("myImage"); var imgUrl = image.src; image.id === "myImage";
var f = document.forms[0]; f.action = "http://www.example.com/submit.php"; f.method = "POST";
Javascript属性名:
- 大小写敏感。从HTML属性名转换到Javascript属性名应该小写。
- 属性名包含多个单词除第一个外其他都首字母大写(defaultChecked或tabIndex)
- HTML属性名在Javascript中是保留字。一般规则是属性名加前缀“html”。如HTML的for属性在javascript中变为htmlFor属性。但是class除外,在Javascript中变为className。
表示HTML属性的值通常是字符串。当属性为布尔值或数值,属性也是布尔值或数值。事件处理程序属性值总是为Function对象(或null)。任何HTML元素的style属性值是CSSStyleDeclaration对象,而不是字符串。
获取和设置非标准HTML属性(getAttribute()、setAttribute()方法)。
var image = document.images[0]; var width = parseInt(image.getAttribute("WIDTH")); image.setAttribute("class", "thumbnail");
getAttribute()获取的属性值都被看作是字符串。使用标准属性名,甚至当这些名称为Javascript保留字也不例外。
hasAttribute()和removeAttribute()方法
有些属性(如HTML的表单元素的disabled属性)在一个元素中是否存在是重点关键。
二、数据集属性
<span class="sparkline" data-ymin="0" data-ymax="10"> 1 1 1 2 2 2346 54 2456 5456 </span>
var sparklines = document.getElementByClassName("sparkline"); for (var i = 0; i < sparklines.length; i += 1) { var dataset = sparklines[i].dataset; var ymin = parseFloat(dataset.ymin); var ymax =parseFloat(dataset.ymax); var data = sparklines[i].textContent.split(' ').map(parseFloat); drawSparkline(sparklines[i], ymin, ymas, data); }
var sparklines = document.getElementByClassName("sparkline"); for (var i = 0; i < sparklines.length; i += 1) { var elt = sparklines[i]; var ymin = parseFloat(elt.getAttribute("data-ymin")); var ymax = parseFloat(elt.getAttribute("data-ymax")); var points = elt.getAttribute("data-points"); var data = elt.textContent.split(" ").map(parseFloat); drawSparkline(elt, ymin, ymax, data); }
三、作为Attr节点的属性
非Element对象的任何节点,该属性为null。Element对象,attributes属性是只读的类数组对象,它代表元素的所有属性。attributes对象也是实时的。
document.body.attributes[0] document.body.attributes.bgcolor; document.body.attributes["ONLOAD"];
四、元素的内容
- 作为HTMl元素的内容
innerHTML、outerHTML 返回元素内容。
insertAdjacentHTML()插入指定元素指定位置。
beforebegin <div id="target"> afterbegin This is the element content beforeend </div> afterend obj.insertAdjacentHTML("afterend", "<br><input name='txt1' >");
- 作为纯文本的元素内容
var para = document.getElementByTagName("p")[0]; var text = para.textContent; para.textContent = "Hello Word!"
function textContent(element, value) { var content = element.textContent; if (value === undefined) { if (content !== undefined) { return content; } else { return element.innerText; } } else { if (content !== undefined) { element.textContent = value; } else { element.innerText = value; } } }
textContent属性就是将指定元素的所有后代Text节点简单地串联在一起。innerText不返回script元素的内容,并试图保留表格格式,同时,innerText试图保留表格格式,同时针对某些表格元素(如 table tbody tr)是只读的属性。
内联script元素有一个text属性用来获取它们的文本,浏览器不显示,并且HTML解析器忽略脚本中尖括号和星号,这使得script元素成为应用程序用来嵌入任意文本内容的一个理想的地方,简单地将元素的type属性设置为某些值(“text/x-custom-data”),就标明了脚本为不可执行的Javascript代码,它的text属性将返回数据给你。
- 作为Text节点的元素内容
function textContent(e) { var child, type, s = ""; for (child = e.firstChild; child != null; child = child.nextSibling) { type = child.nodeType; if (type === 3 || type === 4) { s += child.nodeValue; } else if (type === 1) { s += textContent(child); } } return s; }
blog comments powered by Disqus