js for循环问题
window.onload = function () { //window.onload事件
var div = document.getElementById("test"); //获取id为test的div
var href = div.getElementsByTagName("a"); //获取此div里的所有href
for (var i = 0; i < href.lenght; i++) { //这里感觉for循环怎么不执行啊,换成alert弹出什么的也不执行
Setcookie(href[i],i, href[i].innerHTML);
}
}
function Setcookie(href ,value) {
var expdate = new Date(); //初始化时间
expdate.setTime(expdate.getTime() + 24 * 60 * 60 * 1000); //时间
//设置链接为href,值为value的Cookie
document.cookie = escape(href) + ("=" + escape(value) + ";expires=" + expdate.toGMTString() + ";path=/");
//因为名称含等于号所以使用escape函数进行编码
//document.cookie = escape(href[2].innerHTML) + (";expires=" + expdate.toGMTString() + ";path=/");
//即document.cookie= href+"="+value+";path=/"; 时间可以不要,但路径(path)必须要填写,因为JS的默认路径是当前页,如果不填,此cookie只在当前页面生效!~
}
</script>
而且这个那个Setcookie函数不放在for循环里是可以执行的 展开
你程序的正确性我没有验证,我只来分析程序中for循环这部分的问题:
首先你的代码中length好像写错了,- -!
如果还是解决不了问题,那么可能是以下某种情况导致的:
【一】:
var div = document.getElementById("test"); //获取id为test的div
这段程序是需要获取到ID名为test的HTML元素,首先要保证你的HTML代码中存在这个ID为test的标签,不管什么标签,但要保证存在。
【二】:
window.onload = function () { }
这段代码是让这段程序在HTML文档全部加载完成后执行的语句,但前提是这种语句在一个HTML文档中只能出现一次,如果在这个文档中存在另一个window.onload,那么将会导致花括号中的代码完全不能执行。
【三】:
var href = div.getElementsByTagName("a"); //获取此div里的所有href
这段代码中,getElementsByTagName(),语句是获取到test元素中所有超链接标签,你必须要保证那个ID为test的标签中嵌套了<a>标签,至少要有一个,下面的for循环才可能执行。
【四】:
保证你整体HTML代码结构的正确性,不要让你的HTML代码中多出什么不完整的标签,致使浏览器解析不了你已经设置的ID为test的标签和其中的超级链接。
【五】:
a标签要保证有href属性或者name属性其一,这个a标签才是合理的。
【六】:
在一个HTML文档中,元素中的ID属性是只允许出现一次的,ID、ID,说的就是对身份的识别(Identity),是一个唯一识别码,所以如果你的HTML中出现多个ID为test的元素,那么也可能致使你的div变量得到的那个元素并不是你意愿中要得到的那个,而可能就是另一个ID为test的那个,一般它应该是文档中最后那个ID为test的那个元素。
【七】:
另外需要说的是,我还是第一次见到设置cookie还要放到for里的,这对浏览器的负担将会是很大的,而且是疯狂加不可置信的,你这么干也可能是触发了浏览器的安全机制,不让你如此这么做而导致的,你为嘛不把你的cooie整合了之后,再写成一条呢?
大哥,也谢谢你,这么晚了,好辛苦。最后第七条那个怎么解决呢?是把所有的要存到东西先放到数组里,再存到cookie
里吗,我以前没用过cooki不是很懂,另外再烦请您看看我另外一个问题好吗?也是关于cookie循环,就我的提问里下一条。一会我给你多加分。。。。。。