我一直在讨厌这个问题。我不想通过PHP函数来创建cookie。 javascript函数在Jquery文档准备好的上面定义。 JQuery库几乎都加载了所有这些javascript函数。
<script type="text/javascript">
$( document ).ready(function() {
function superadmin()
{
document.cookie = "user=superadmin";
window.location = "list.php";
}
function user()
{
document.cookie = "user=user";
window.location = "list.php";
}
});
</script>
<script type='text/javascript'>
$( document ).ready(function() {
superadmin();
});
</script>
<div class="container">
答案 0 :(得分:3)
函数声明的作用域是声明它们的函数。
superadmin
在传递给ready()
的匿名函数中定义,因此无法在该匿名函数之外调用。
首先,删除此内容:
<script type='text/javascript'>
$( document ).ready(function() {
superadmin();
});
</script>
第二次,将调用superadmin();
置于现有的就绪事件处理函数中。
答案 1 :(得分:0)
这是与javascript范围相关的问题。 jquery document.ready事件使用单独的范围,因此如果在那里创建变量,则无法从其他位置访问它。
对此的解决方案是创建一个命名空间,在这种情况下,您可以在其中附加变量。上述问题可以通过这种方式解决:
<script type="text/javascript">
var Namespace = {};
$( document ).ready(function() {
Namespace.superadmin = function()
{
document.cookie = "user=superadmin";
window.location = "list.php";
}
Namespace.user = function()
{
document.cookie = "user=user";
window.location = "list.php";
}
});
</script>
<script type='text/javascript'>
$( document ).ready(function() {
Namespace.superadmin();
});
</script>
<div class="container">
编辑:
针对上述具体情况,昆汀发布的解决方案更好。这是一个可接受的解决方案,假设您无法避免拥有两个单独的侦听器(可能在不同的文件中)。您当然也可以使用可从两个范围访问的范围,在这种情况下是范围。
答案 2 :(得分:0)
您的代码不在同一范围内,请尝试以下操作:
superadmin = function()
而不是
function superadmin()
有关详细信息,请参阅http://www.w3schools.com/js/js_scope.asp
答案 3 :(得分:-1)
我通过这种方式在javascript中做过烹饪
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function checkCookie() {
var user = getCookie("username");
if (user != "") {
alert("Welcome again " + user);
} else {
user = prompt("Please enter your name:", "");
if (user != "" && user != null) {
setCookie("username", user, 365);
}
}
}
function deleteCookie(name) {
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
setCookie("userid",14);
setCookie("username","rajesh");
var userid = getCookie("userid");
var username = getCookie("username");