编辑感谢所有人!
我在页面上有一个cookie,当页面加载时我想将cookie中的值放入输入框作为其defualt值。
然而它不起作用,我找不到问题。我甚至做了一个测试div并试图改变它,但它不会工作。
function checkCookie() {
var cookieName = getCookie("username");
if (cookieName != null && cookieName != "") {
alert(cookieName);
document.getElementById("fname").value = cookieName
} else {
alert("else");
return;
}
}
这是html
<input type="text" name="fname" id="fname" onKeyUp="isName(this.value)">
我也尝试了这个代码(我刚做了一个叫做tester2的div
document.getElementById("fname").value = "hello"
不起作用
document.getElementById("tester2").innerHTML = cookieName
不起作用
没有任何作用。它不会让我更改此函数中的元素。如果我尝试将代码(即document.etcetc.innerHTML =“hi”)放在另一个函数中,那么它可以完美地工作......但是它不会像上面所示那样运行。它让我疯狂。
有什么想法吗?
答案 0 :(得分:1)
第一步应该是确保checkCookie
完全返回您想要的内容。如果它是空的,它显然具有相同的效果,就好像它没有做任何事情,因为它会在textarea中放入一个空值。
假设cookie
包含格式正确的值:
document.getElementById("fname").value = cookie;
答案 1 :(得分:0)
我怀疑当checkCookie
函数执行时,DOM还没有准备好,你的输入也不存在。
要确保不是这种情况,请尝试以下操作:
window.onload = checkCookie;
仅在加载窗口内容时执行checkCookie
功能。这不是最有效的方法,但由于我不知道您使用的是哪种浏览器,因此它是最可靠的测试方式。
编辑:看了your code后,问题出在这一行:
window.onload = checkCookie();
这将立即执行checkCookie
函数并尝试将函数的结果赋给window.onload
。
检查我之前的示例,看看应该如何完成。
答案 2 :(得分:0)
我认为在JS中,每个语句都以;
半结肠
document.getElementById("fname").value = cookieName
我认为你应该在最后添加;
答案 3 :(得分:0)
这是一个例子
HTML
<input type="text" name="fname" id="fname">
的Javascript
function getCookie(something) {
var cookies = {
"username": "John Smith"
}
return cookies[something];
}
function checkCookie() {
var cookieName = getCookie("username");
if (cookieName != null && cookieName != "") {
alert(cookieName);
this.value = cookieName;
} else {
alert("else");
}
}
var fname = document.getElementById("fname");
fname.addEventListener("keyup", checkCookie, false);
上
因此,基于您的评论,您可能在尝试访问DOM之前没有等待DOM加载。
以下是如何执行此操作的示例。
window.addEventListener("load", function onLoad() {
this.removeEventListener("load", onLoad);
function getCookie(something) {
var cookies = {
"username": "John Smith"
}
return cookies[something];
}
function checkCookie() {
var cookieName = getCookie("username");
if (cookieName != null && cookieName != "") {
alert(cookieName);
this.value = cookieName;
} else {
alert("else");
}
}
var fname = document.getElementById("fname");
fname.addEventListener("keyup", checkCookie, false);
}, false);
上
请参阅:
注释
加载事件在文档加载过程结束时触发。在 至此,文档中的所有对象都在DOM中,而且都是 图像和子帧已完成加载。
摘要
addEventListener()在单个事件上注册单个事件侦听器 目标。事件目标可以是文档中的单个元素, 文档本身,窗口或XMLHttpRequest。