我的javascript代码刚刚开始工作。如果我只是将<script>alert("alert");</script>
放在我的代码中,它就会正常工作,但是下面代码中的大块脚本似乎被忽略了。代码用于在用户单击链接时提交隐藏的表单。这是一个简单的缺失大括号,还是更困难的东西?
守则如下:
<html>
<head>
<script>
function $_GET(q,s) {
s = (s) ? s : window.location.search;
var re = new RegExp('&'+q+'=([^&]*)','i');
return (s=s.replace(/^\?/,'&').match(re)) ?s=s[1] :s='';
}
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 "";
}
Date.prototype.addDays = function(days)
{
var dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
}
function stripGet(url) {
return url.split("?")[0];
}
function load() {
alert('load');
document.getElementByName('link').onclick=onsubmit;
if($_GET('l') === "penguin"){
setCookie('expiry', new Date.addDays(30), 400);
setCookie('expired', 'FALSE', 30);
window.location = stripGet(window.location);
}
}
function onsubmit(){
alert('on submit');
if (new Date() > new Date(getCookie('expiry') || getCookie('expired') == 'TRUE') {
alert("expired");
setCookie('expired', 'TRUE', 1000);
window.location ='???';
return false;
}
else {
alert("valid");
document.getElementByName('username').value = atob('???');
document.getElementByName('username').value = atob('???');
document.forms['form'].submit();
return true;
}
</script>
</head>
<body onload="load()" bgcolor="green" top="45%" align="center" link="orange" active="blue" visited="orange">
<form name="form" action="submit.php" method="POST">
<input name="__formname__" type="hidden" value="loginform">
<input name="username" type="hidden">
<input name="username" type="hidden">
</form>
<a name="link" href="javascript:onsubmit();" onclick="alert("click"); onsubmit(); return true;">
<h1 style="font-size: 84pt; padding-top: 1.5cm">
Submit form
</h1>
</a>
</body>
</html>
答案 0 :(得分:2)
本节
if (new Date() > new Date(getCookie('expiry') || getCookie('expired') == 'TRUE') {
缺少if语句的右括号。
整个函数需要一些语法工作,所以下面应该修复它。
function onsubmit() {
alert('on submit');
if (new Date() > new Date(getCookie('expiry') || getCookie('expired') == 'TRUE')) {
alert("expired");
setCookie('expired', 'TRUE', 1000);
window.location = '???';
return false;
} else {
alert("valid");
document.getElementByName('username').value = atob('???');
document.getElementByName('username').value = atob('???');
document.forms['form'].submit();
return true;
}
}
正如上面的评论所述,您的代码确实存在控制台错误。请务必先检查这些内容,然后快速找出原因无法解决的问题。
答案 1 :(得分:2)
你应该看一下你的javascript控制台:
Uncaught SyntaxError: Unexpected token {
page.html:70 Uncaught ReferenceError: load is not defined
page.html:79 Uncaught SyntaxError: Unexpected token }
(program):1 Uncaught TypeError: onsubmit is not a function
您的代码缺少函数中的一些括号&#34; onsubmit()&#34;。
function onsubmit() {
alert('on submit');
/* ')' was missing at the end of the if-clause! */
if (new Date() > new Date(getCookie('expiry') || getCookie('expired') == 'TRUE')) {
alert("expired");
setCookie('expired', 'TRUE', 1000);
window.location ='???';
return false;
}
else {
alert("valid");
document.getElementByName('username').value = atob('???');
document.getElementByName('username').value = atob('???');
document.forms['form'].submit();
return true;
}
} // <- '}' was missing here!
答案 2 :(得分:0)
您在最后一个“if”语句中缺少结束参数。请按照以下说明:
您的代码
if (new Date() > new Date(getCookie('expiry') || getCookie('expired') == 'TRUE') {...}
错误:new Date(getCookie('expiry')
&lt; ---缺少关闭参数“)”
更正代码:
if (new Date() > new Date(getCookie('expiry'))|| getCookie('expired') == 'TRUE') {...}
此处的工作代码:http://codepen.io/theConstructor/pen/EKWvyJ?editors=1010
希望这会有所帮助。
答案 3 :(得分:0)
调试代码以确定错误会更好。 我发现了一个错误,但我不知道它是否是唯一的错误:
function load() {
alert('load');
document.getElementByName('link').onclick=onsubmit;
它是getElementsByName所以它的元素不是元素,你还需要选择它们所针对的元素,所以如果只有一个元素具有相同的名称,那么你可以像这样调用它:
document.getElementsByName('link')[0].onclick=onsubmit;