JavaScript操作:动态删除Table的内容,读取、设置Cookies,获取地址栏参数。
来源:http://www.xx0594.com/
时间:2017-4-2
作者: 浏览人数:881
用JS进行实用的操作,包括动态删除Table的内容,读取、设置Cookies,获取地址栏参数等。有详细的注释。
<script>
function removeRow() {//删除Table表格中的一行。
var chkObj = document.getElementsByName("chkArr");//每行表格前有一个CheckBox,名字为chkArr,创建代码为<input type='checkbox' name='chkArr' id='chkArr" + (x/2).ToString() + "' style='width:20px' />"
var tabObj = document.getElementById("Favorite_Table");//所要查找的表格(表格内有要删除的行),
var stext,shref,ss="";//定义几个变量。
for (var k = 0; k < chkObj.length; k++) {//开始查找,以chkObj是基准,
if (chkObj[k].checked) {//如果选定了,
tabObj.deleteRow(k);//删除该行,
k = -1;//从头再开始查找。
}
}
var fobj = document.getElementsByName("Favorite");//表格中间内容,每一行的Name为Favorite(所有行可以同名,可设其ID不一样。)
for (var k = 0; k < fobj.length; k++) {//开始查找,
shref = fobj[k]["href"];//:fobj[k].getAttribute("href")==取得href段的内容,fobj[k].innerText=取得链接内容。
if (ss != "") ss += "|";//开始合并,第一条前头不加|标志符,
ss += escape(fobj[k].innerText + "|" + getQueryString(shref,"id"));//查找的结果用|进行合并,形式是:内容|链接的ID参数...
}
if (ss == "" || ss == null) setCookie("FavoriteInfo", ss, -10);//都被删除了,设置其过期了。
else setCookie("FavoriteInfo", ss, 365);//否则设置其有效期为一年。
//document.write(ss);
}
function getCookie(c_name) {
if (document.cookie.length > 0) { //先查询cookie是否为空,为空就return ""(this.getAttribute('href')
c_start = document.cookie.indexOf(c_name + "="); //通过String对象的indexOf()来检查这个cookie是否存在,不存在就为 -1
if (c_start != -1) {
c_start = c_start + c_name.length + 1; //最后这个+1其实就是表示"="号啦,这样就获取到了cookie值的开始位置
c_end = document.cookie.indexOf(";", c_start); //其实我刚看见indexOf()第二个参数的时候猛然有点晕,后来想起来表示指定的开始索引的位置...这句是为了得到值的结束位置。因为需要考虑是否是最后一项,所以通过";"号是否存在来判断
if (c_end == -1) c_end = document.cookie.length;
return unescape(document.cookie.substring(c_start, c_end)); //通过substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基础,想了解的可以搜索下,在文章结尾处也会进行讲解cookie编码细节
}
}
return "";
}
function setCookie(NameOfCookie, value, expiredays) {
var ExpireDate = new Date();
ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
document.cookie = NameOfCookie + "=" + escape(value) + ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}
//用JS获取地址栏参数的方法(超级简单),shref为链接,name为该链接中的参数如ID,成功返回包含该参数的十六进制字符串,如shref=http://www.xx0594.com/article.aspx?ID=100,返回后100(十六进制)。
function getQueryString(shref,name)
{
var reg = new RegExp("(^|\\?|&)" + name + "=([^&]*)(\\s|&|$)", "i");
if (reg.test(shref)) return unescape(RegExp.$2.replace(/\+/g, " ")); return "";
}
</script>