自己动手用javascript写xpath
自己以前写过一篇文章,是关于dom下xpath的编写,不过那是借助浏览器本身的特性,这次我想用javascrip和正则表达式打造自己的xpath,不多啰嗦,看代码:
function xpath(n,m){
if(/\]$/i.test(m)){
var t1=[]
var reg=/^(\/\/|\/)(.+)\[(.+)\]$/i;
m.match(reg);
if(RegExp.$1=="/"){
var t2=n.childNodes;
for(var i=0;i<t2.length;i++){
if(t2[i].nodeType==1 && t2[i].tagName.toLowerCase()==RegExp.$2)
t1.push(t2[i]);
}
}else{
var t2=n.getElementsByTagName(RegExp.$2);
for(var i=0;i<t2.length;i++){
if(t2[i].nodeType==1)
t1.push(t2[i]);
}
}
if(RegExp.$3.indexOf("='")>-1){
var reg1=/([\w\d]+)(\^=|\~=|\!=|\$=|=)'(.+)'/i;
RegExp.$3.match(reg1);
//alert(RegExp.$3);
switch(RegExp.$2){
case "^=":
for(var i=0;i<t1.length;i++){
if(!(t1[i].getAttribute(RegExp.$1) && t1[i].getAttribute(RegExp.$1).substr(0,RegExp.$3.length)==RegExp.$3)){
t1.splice(i,1);
//alert(i);
i--;
}
}
break;
case "$=":
for(var i=0;i<t1.length;i++){
if(!(t1[i].getAttribute(RegExp.$1) && t1[i].getAttribute(RegExp.$1).substr(t1[i].getAttribute(RegExp.$1).length-RegExp.$3.length,RegExp.$3.length)==RegExp.$3)){
t1.splice(i,1);
i--;
&nb
相关文档:
"#"包含了一个位置信息
默认的锚点是#top 也就是网页的上端
而javascript:void(0) 仅仅表示一个死链接
这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首,而javascript:void(0) 则不是如此
所以调用脚本的时候最好用void(0)
或者<input onclick>
<div onclick>等
打开新窗口链接的几种办法 ......
一直以来对if(obj)的用法有点疑惑,不知道如果obj是一个对象的时候(而不是简单的true/false),该怎么执行。在什么情况下该为true,什么情况下又该为false.
通过下面的小测试,了解到,当obj="",obj=undefined,obj=null,obj=NaN 的时候返回false,obj不为空的时候则返回true。
var obj ;//undefined
if(ob ......
提起面向对象我们就能想到类,对象,封装,继承,多态。在《javaScript高级程序设计》(人民邮电出版社,曹力、张欣译。英文名字是:Professional JavaScript for Web Developers)这本书中描述的还算比较详细。我们看看JavaScript中定义类的各种方法。
1.工厂方式
javaScri ......
可以控制列表按日期以及按字数排序.升或者降序.
代码简单封装,按一定的格式调用即可。
代码写的比较繁琐,很多方法用的很原始...
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
......
function sAlert(msg,boxtype,func,msgtitle)
sAlert('信息内容',1,'','信息标题')
@msg:提示信息内容
@boxtype:1为弹出框,2为确认框,3为提示框
@func:点确认时执行的函数
@title:信息框标题文字内容
只有msg是必须的,后面的参数可以省略。如果中间的参数为空则在对应位置上''或者 ......