JS,JQuery杂谈
JS返回页面:
JS返回前一个页面,经常看到有人用window.history.go(-1)这种方法 这种放的确可以返回,也仅仅只是返回,返回的页面信息却没有刷新。也有人用windows.history.back(),但是经常返回的时候会丢失页面,最近写一个返回上上个页面但是信息会改变的按钮,于是想到了结合window.history.go(-1)实现,用window.location.href=window.history.go(-2).toString()
JQuery 模糊匹配:
[属性名称] 匹配包含给定属性的元素
[att=value] 匹配包含给定属性的元素 (大小写区分)
[att*=value] 模糊匹配
[att!=value] 不能是这个值
[att$=value] 结尾是这个值
[att^=value] 开头是这个值
[att1][att2][att3]... 匹配多个属性条件中的一个
示例:
HTML代码:
<div id="father1" class="father" onclick="toggle('child1','father1')">
<div class="fathers">家人</div>
</div>
<div id="child1" class="child">
<ul><li>家人</li></ul>
</div>
JQUERY代码(修改div的id中以'child'开头的层的display属性为none):
$().ready(function () {
$("div[id^=child]").css("display", "none");
})
JS关于日期比较和获取:
var myDate = new Date(Date.parse("1991,11,11"));//将字符串转换成日期函数
var year=new Date().getFullYear();//获取当前时间的年份
var month=new Date().getMonth() + 1;//获取当前时间的月份,注意+1,getmonth月份计算是以0开始的,所以在获取时需要+1
var day=new Date().getDate();//获取当前时间的日期
var datenow = new Date(Date.parse( new Date().getFullYear()+ "," + (new Date().getMonth() + 1) + "," + new Date().getDate()));//转换日期格式
在用JS进行日期比较的时候可以直接date()>new Date(Date.parse("1991,11,11"))或者以date()>myDate 这种形式进行比较
如果当前时间相对于比较的时间晚 则在比较的时候是当前时间要小于进行比较的时间
parseInt(Math.abs(EndTime- StrTime) / 1000 / 60 / 60 /24);//计算两个日期直接相差的天数。
parseInt(Math.ceil(Math.abs(endDate - strDate) / 1000 / 60 / 60 / 24))/7;//使用进一除法计算周
var getmon = (endDate.getFullYear() - strDate.getFullYear()) * 12 + endDate.getMonth() - strDate.getMonth();
if (endDate.getDate() >= strDate.getDate()) {
alert(getmon + 1);
}
else {
alert(getmon);
}///计算开始时间与结束时间相差多少个月
JS在table标签的指定位置插入一行数据
function InsertProduct() {
var tb = document.getElementById("productTable"); //获取表格标签
var refRow = tb.rows.length - 1; //table中现有的行数减一
var newRefRow = tb.insertRow(refRow);
newRefRow.insertCell(0).innerHTML = "<input type=\"checkbox\" />";
newRefRow.insertCell(1).innerHTML = document.getElementById("t_name").value;
newRefRow.insertCell(2).innerHTML = document.getElementById("t_dw").value;
newRefRow.insertCell(3).innerHTML = document.getElementById("t_gkj").value;
newRefRow.insertCell(4).innerHTML = document.getElementById("t_sl").value;
newRefRow.insertCell(5).innerHTML = document.getElementById("t_zk").value;
newRefRow.insertCell(6).innerHTML = document.getElementById("t_zhj").value;
newRefRow.insertCell(7).innerHTML = document.getElementById("t_xj").value;
}
js在table中添加合并单元格
var cell = document.createElement("TD"); //声明一个td
cell.setAttribute('colSpan', 2); //单元格数量
cell.setAttribute('id', "ccoll"); //合并后的单元格id
cell.innerHTML = "合并的单元格"; //单元格里面的内容
newRefRow.appendChild(cell); //将单元格加入到表格行的结尾处
JS计算日期
//日期减去天数后得到新的日期
function cc(dd, dadd) {
var a = new Date(dd)
a = a.valueOf()
a = a - dadd * 24 * 60 * 60 * 1000
a = new Date(a)
alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")
}
cc("2/28/2002",1);
var a = document.getElementByIdx_x_x("dom");
var b = a.childNodes;获取a的全部子节点;
var c = a.parentNode;获取a的父节点;
var d = a.nextSbiling;获取a的下一个兄弟节点
var e = a.previousSbiling;获取a的上一个兄弟节点
var f = a.firstChild;获取a的第一个子节点
var g = a.lastChild;获取a的最后一个子节点
jQuery.parent(expr) 找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class")
jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素
jQuery.children(expr).返回所有子节点,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点
jQuery.contents(),返回下面的所有内容,包括节点和文本。这个方法和children()的区别就在于,包括空白文本,也会被作为一个
jQuery对象返回,children()则只会返回节点
jQuery.prev(),返回上一个兄弟节点,不是所有的兄弟节点
jQuery.prevAll(),返回所有之前的兄弟节点
jQuery.next(),返回下一个兄弟节点,不是所有的兄弟节点
jQuery.nextAll(),返回所有之后的兄弟节点
jQuery.siblings(),返回兄弟姐妹节点,不分前后
jQuery.find(expr),跟jQuery.filter(expr)完全不一样。jQuery.filter()是从初始的jQuery对象集合中筛选出一部分,而jQuery.find()
的返回结果,不会有初始集合中的内容,比如$("p"),find("span"),是从
p元素开始找,等同于$("p span")
js获取节点操作
接口 |
nodeType常量 |
nodeType值 |
备注 |
Element |
Node.ELEMENT_NODE |
1 |
元素节点 |
Text |
Node.TEXT_NODE |
3 |
文本节点 |
Document |
Node.DOCUMENT_NODE |
9 |
document |
Comment |
Node.COMMENT_NODE |
8 |
注释的文本 |
DocumentFragment |
Node.DOCUMENT_FRAGMENT_NODE |
11 |
document片断 |
Attr |
Node.ATTRIBUTE_NODE |
2 |
节点属性 |
方法 |
描述 |
createAttribute() |
用指定的名字创建新的Attr节点。 |
createComment() |
用指定的字符串创建新的Comment节点。 |
createElement() |
用指定的标记名创建新的Element节点。 |
createTextNode() |
用指定的文本创建新的TextNode节点。 |
getElementById() |
返回文档中具有指定id属性的Element节点。 |
getElementsByTagName() |
返回文档中具有指定标记名的所有Element节点。 |
属性 |
描述 |
attributes |
如果该节点是一个Element,则以NamedNodeMap形式返回该元素的属性。 |
childNodes |
以Node[]的形式存放当前节点的子节点。如果没有子节点,则返回空数组。 |
firstChild |
以Node的形式返回当前节点的第一个子节点。如果没有子节点,则为null。 |
lastChild |
以Node的形式返回当前节点的最后一个子节点。如果没有子节点,则为null。 |
nextSibling |
以Node的形式返回当前节点的兄弟下一个节点。如果没有这样的节点,则返回null。下一个兄弟节点 |
nodeName |
节点的名字,Element节点则代表Element的标记名称。 |
nodeType |
代表节点的类型。 |
parentNode |
以Node的形式返回当前节点的父节点。如果没有父节点,则为null。 |
previousSibling |
以Node的形式返回紧挨当前节点、位于它之前的兄弟节点。如果没有这样的节点,则返回null。上一个兄弟节点 |
方法 |
描述 |
appendChild() |
通过把一个节点增加到当前节点的childNodes[]组,给文档树增加节点。 |
cloneNode() |
复制当前节点,或者复制当前节点以及它的所有子孙节点。 |
hasChildNodes() |
如果当前节点拥有子节点,则将返回true。 |
insertBefore() |
给文档树插入一个节点,位置在当前节点的指定子节点之前。如果该节点已经存在,则删除之再插入到它的位置。 |
removeChild() |
从文档树中删除并返回指定的子节点。 |
replaceChild() |
从文档树中删除并返回指定的子节点,用另一个节点替换它。 |