《JavaScript DOM编程艺术》studyNote part2

(X)HTML与CSS使用方法

1、“Web的力量在于它最广泛的包容性,无条件的向每个人开放是它的一个基本特点。”

2、网页的三层结构
结构层:(X)HTML
表示层:CSS
行为层:JavaScript+DOM

3、最佳编程准则:
使用有意义的标记来构造内容
使用CSS把样式信息与核心内容分离开来
使用有着足够预留退路的JavaScript脚本来添加操作行为

4、网站子目录结构/images /styles /scripts ;CSS定义为layout.css负责页面布局、color.css颜色相关的信息、typography.css文本字型有关的CSS信息;全局JS函数放在global.js中

5、table的sumary属性的内容不会被可视化浏览器显示,对于很复杂的表格,添加一个summary属性使得那些用“听”的浏览者了解表格的内容。

6、  overflow属性的四种可取值与含义:
visible:不裁剪溢出的内容。
hidden:裁剪溢出的内容
scroll:类似于hidden,但会显示滚动条以便用户能够看到内容的其他部分
auto:类似于scroll,只有在真正发生溢出的时候才显示滚动条

7、ol为有序列表,ul为无序列表,dl为定义列表,style样式里的media参数用于指定样式表被接受的介质或媒体,缺省值是screen提交到计算机屏幕。

8、一般用来显示数据还是使用table,也不能一味的说它不好
<table><caption></caption><thead><tr><th></th></tr></thead>
<tbody><tr><td></td></tr></tbody></table>

9、包容在<li>标签里的列表项通常各占一行,若把display属性设置为none之后,那些列表项便可由纵向排列变成横向排列。

10、<abbr>与<acronym>的区别:例如把DOM念成一个单词dom,它就是acronym(字头缩写),如果念成三个字母D-O-M,它就是abbr(缩略语)。IE不支持<abbr>,<abbr>的childNodes.length永远为0

11、dl定义表项
<dl>
<dt>定义标题</dt>
<dd>定义描述</dd>
</dl>

12、blockquote元素包含一个可选属性cite,它的基本用途是给出一个用来告诉人们blockquote元素内容是来自何方的URL地址。

13、accesskey约定俗成的设置方法,参见:http://www.clagnut.com/blog/193,一般来说accesskey = “1”对应一个“返回主页”的链接,2对应一个“后退”链接,4对应“打开本站搜索”,9对应“联系方法”,0查看快速访问键清单。

14、独享CSS样式的定义:h2.special{}、h2#special{}
 
把多个JavaScript函数绑定到onload事件事件处理函数上

function addLoadEvent(func){
       var oldonload = window.onload;
       if(typeof window.onload != ‘function’){
       window.onload = func;
}else {
       window.onload = function(){
              oldonload();
              func();
              }
}
}

表单页面常用JS函数:
1、label元素的for属性可以把一条文本与某个表单字段关联在一起。例如,以下函数实现效果:当用户点击某个label元素所包含的文本,与之相关的表单字段就将获得输入焦点,并等待用户输入数据。

function focusLabels() {
  if (!document.getElementsByTagName) return false;
  var labels = document.getElementsByTagName("label");
  for (var i=0; i<labels.length; i++) {
    if (!labels[i].getAttribute("for")) continue;
    labels[i].onclick = function() {
      var id = this.getAttribute("for");
      if (!document.getElementById(id)) return false;
      var element = document.getElementById(id);
      element.focus();
    }
  }
}


2、resetFields()函数实现效果,当表单字段获得输入焦点时,自动删除它的默认值,当用户在未输入任何东西的情况下离开表单字段时,恢复它的默认值。

function resetFields(whichform) {
  for (var i=0; i<whichform.elements.length; i++) {
    var element = whichform.elements[i];
    if (element.type == "submit") continue;
    if (!element.defaultValue) continue;
    element.onfocus = function() {
    if (this.value == this.defaultValue) {
      this.value = "";
     }
    }
    element.onblur = function() {
      if (this.value == "") {
        this.value = this.defaultValue;
      }
    }
  }
}


3、表单检查的两个函数:isFilled()和isEmail()

function validateForm(whichform) {
  for (var i=0; i<whichform.elements.length; i++) {
    var element = whichform.elements[i];
    if (element.className.indexOf("required") != -1) {
      if (!isFilled(element)) {
        alert("Please fill in the "+element.name+" field.");
        return false;
      }
    }
    if (element.className.indexOf("email") != -1) {
      if (!isEmail(element)) {
        alert("The "+element.name+" field must be a valid email address.");
        return false;
      }
    }
  }
  return true;
}

function isFilled(field) {
  if (field.value.length < 1 || field.value == field.defaultValue) {
    return false;
  } else {
    return true;
  }
}

function isEmail(field) {
  if (field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1) {
    return false;
  } else {
    return true;
  }
}

function prepareForms() {
  for (var i=0; i<document.forms.length; i++) {
    var thisform = document.forms[i];
    resetFields(thisform);
    thisform.onsubmit = function() {
      return validateForm(this);
    }
  }
}
原文地址:https://www.cnblogs.com/kaiye/p/3039074.html