location.href,locationhrefreplace
location.href不跳转是怎么回事
编写代码,
js 用location.href做跳转,
然后打开浏览器查看我们发现 没有请求 然后查看代码发现 a标签的超链接为javascript:void(0); 把a标签的href中的javascript:void(0);修改为# 即可解决
location.href()和location.assign()这两个方法有什么不同呢?
很简单
location.href是一个属性,要这样使用:
location.href=''
而location.assign('') 就是 location.href=''
至于
location.replace('')与前两者的区别是,在replace之后,浏览历史就被清空了(href与assign方法会产生历史记录)。
建议:使用replace。因为前两者会产生历史记录,而浏览者如果点‘后退’按钮,就会产生'redirection loop',会被浏览器禁止。
js里用location.href跳转
那肯定是你加了之后你的url非法格式了,当然不跳转了,你直接拼接innerHTML容易出错的,有的东西是不能直接拼接的,例如转义字符或者空格什么的,中文参数过长什么的还要使用encodeComponent或者encode方法呢。
function?test()?{
????var?table?=?document.getElementById("rule");
????var?stuIds?=?"";
????//?命名要规范,不然rows和长度实在难以凑到一起去想象。
????var?len?=?table.rows.length;
????//?这里i从0开始,索引都是从0开始,不是1
????//?这里不要等于len,不然最后一个undefined
????for?(var?i?=?0;?i??len;?i++)?{
????????//?这里累加就好,简洁为上
????????stuIds?+=?table.rows[i].cells[0].innerHTML;
????}
????//?在这里F12控制台输出信息,看看到底是什么乱七八糟的东西
????//?是不是和你的后台所需要的参数一致
????//?一般来说都有分隔符分割每个学生的id,你直接累加,试问如何区分??
????//到后台了,肯定是被分割的id,然后后台split切割什么的,得到数组
????//?于是被操作进数据库。
????console.debug(stuIds);
????//?location.href和window.location.href是一个意思,
????//?locatin就是window的对象属性,默认window是全局性质,
????//?任意全局变量都是他的对象属性,不写window就是默认他
????location.href?=?"ReteResult.jsp?stuIds="?+?stuIds;
}
input?value="点我"?type="button"?onclick="test()"
最后,最重要的,采纳即可。