好的,所以我已经开始从书籍Beginning Javascript 5th ed学习javascript,只是被js脚本搞糊涂了
function getCookieValue(name) {
var value = document.cookie;
var cookieStartsAt = value.indexOf(" " + name + "=");
if (cookieStartsAt == -1) {
cookieStartsAt = value.indexOf(name + "=");
}
if (cookieStartsAt == -1) {
value = null;
} else {
cookieStartsAt = value.indexOf("=", cookieStartsAt) + 1;
var cookieEndsAt = value.indexOf(";", cookieStartsAt);
if (cookieEndsAt == -1) {
cookieEndsAt = value.length;
}
value = unescape(value.substring(cookieStartsAt,
cookieEndsAt));
}
return value;}
我的问题是indexOf运算符在这里是如何工作的(我知道它是如何工作的并且以前使用它)? 上述程序的定义如下:
该函数的第一项任务是获取document.cookie字符串并将其存储在值变量
中var value = document.cookie;
接下来,您需要找出带有名称的cookie作为参数传递到函数的位置 在...内 值字符串。您使用String对象的inde x Of()方法来查找它 信息,如下一行所示:
var cookieStartsAt = value.indexOf(" " + name + "=");
该方法将返回找到单个cookie的字符位置,如果不是,则返回-1 这样的名称,因此不存在这样的cookie。你搜索 " " +名称+" ="这样您就不会无意中找到包含您需要的名称的cookie名称或值。例如,如果你 有 xFoo,Foo和yFoo作为cookie名称,搜索没有前面空格的Foo会匹配 首先是xFoo,这不是你想要的!
这里刚刚发生了什么?他们是如何使用indexOf()实现名称的位置的?请解释 ?我无法理解xfoo,foo,yfoo的例子?寻找一个更简单的例子。
答案 0 :(得分:1)
document.cookie
包含类似cookiename=cookievalue
indexOf正在获取cookie的值部分开头的位置
var cookieStartsAt = value.indexOf("cookiename=");
这允许您使用该数字来获取带有substring()