有些意思,把 behavior 和 presentation 分开的一些思路。大约就是遍历元素,然后根据一些标签名、class或者自定义属性来赋予元素一些 behavior。也就是说,尽量不在 html 嵌入破碎的 javascript 代码,而统统在 onload 以后一次处理。
找到一个中文版 JavaScript触发器
如果没什么问题,还是建议阅读英文版,中文说这些事情总是怪怪的。部分代码摘录如下:
var x = document.forms[0].elements;
for (var i=0;i { if ( x[ i ].className.indexOf('required') != -1 && !x[ i ].value ) ... } 说明:必填项 的表单元素,给个所谓的 required,然后判断是否有该字符串以及值。
function validateForm() { var x = document.forms[0].elements; for (var i=0;i { if (x[ i ].getAttribute('required') && !x[ i ].value) // notify user of error } } var x = document.getElementsByTagName('textarea'); for (var i=0;i { if (x[ i ].getAttribute('maxlength')) x[ i ].onkeypress = checkLength; } function checkLength() { var max = this.getAttribute('maxlength'); if (this.value.length > max) // notify user of error } 说明:使用自定义属性,更容易处理。 我关心的是 XHTML验证会通不过,果然作者立刻给出了办法,自定义 DTD。 其实也不是什么新思路,以前我们也这么做,所以我觉得重要的是一个语义(semantic)的html代码结构,通过DOM我们就可以做很多事情了,:)
# Elements need to be referenced in lowercase, e.g. document.getElementsByTagName(”p”)
元素名必须小写
# document.body is deprecated, instead reference it by id or use
document.body 属于不推荐,应该使用id或者(如下的格式)
document.getElementsByTagName(”body”).item(0)
# Collections like document.images, document.applets, document.links, document.forms and document.anchors do not exist when serving XHTML as XML, instead use document.getElementsByTagName()
如果伺服为 XHTML(XML)的话,document.images, document.applets, document.links, document.forms 和 document.anchors 将不复存在。
# innerHTML and document.write cannot be used anymore, instead use DOM methods, e.g. document.createElementNS(”http://www.w3.org/1999/xhtml”, “div”)
innerHTML 和 document.write 将不能使用,取而代之以 DOM 方法,如
document.createElementNS(”http://www.w3.org/1999/xhtml”, “div”)
via http://www.bobbyvandersluis.com/articles/goodpractices.php