自己动手用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
相关文档:
scrollHeight: 获取对象的滚动高度。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
offsetL ......
演示地址: http://www.wowo-design.com/view/51_01/index.htm
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>css菜单演示</title>
<style type="text/css">
<!--
*{margin:0;padding:0;border:0;}
body {
......
日前,Mozilla 的 Arun Ranganathan 向 W3C 提交了一个草案,旨在推出一个 JavaScript API,让
JavaScript 脚本直接操作本地文件,Firefox 的最新浏览器版本中已经对该 API 提供了大量的支持,不过出于安全考虑,该API
将只对本地文件提供有限的访问。
该 API 引入了一个 FileReader 对象,可以异步加载本地文件系统中的 ......
经常会在js里用到数组,比如 多个名字相同的input, 若是动态生成的, 提交时就需要判断其是否是数组.
if(document.mylist.length != "undefined" ) {} 这个用法有误.
正确的是 if( typeof(document.mylist.length) != "undefined" ) {}
或 if( !isNaN(document.mylist.length) ) {}
typeof ......
function sAlert(msg,boxtype,func,msgtitle)
sAlert('信息内容',1,'','信息标题')
@msg:提示信息内容
@boxtype:1为弹出框,2为确认框,3为提示框
@func:点确认时执行的函数
@title:信息框标题文字内容
只有msg是必须的,后面的参数可以省略。如果中间的参数为空则在对应位置上''或者 ......