作者: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