js for循环问题

下面的for循环不执行window.onload=function(){//window.onload事件vardiv=document.getElementById("... 下面的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循环里是可以执行的
展开
 我来答
cmoooo
2014-05-08 · TA获得超过3587个赞
知道小有建树答主
回答量:741
采纳率:0%
帮助的人:661万
展开全部

你程序的正确性我没有验证,我只来分析程序中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循环,就我的提问里下一条。一会我给你多加分。。。。。。
cyzll017
2014-05-08 · 超过26用户采纳过TA的回答
知道答主
回答量:67
采纳率:66%
帮助的人:36.9万
展开全部
for (var i = 0; i < href.lenght; i++) { //这里感觉for循环怎么不执行啊,换成alert弹出什么的也不执行

length打错了你打成了lenght?
追问
大哥,谢谢你。。。就是这个原因。。。vs里这个竟然不报。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式