Javascript代码不会执行

时间:2016-03-20 22:15:43

标签: javascript html

我的javascript代码刚刚开始工作。如果我只是将<script>alert("alert");</script>放在我的代码中,它就会正常工作,但是下面代码中的大块脚本似乎被忽略了。代码用于在用户单击链接时提交隐藏的表单。这是一个简单的缺失大括号,还是更困难的东西?

守则如下:

<html>
<head>
<script>
function $_GET(q,s) {
    s = (s) ? s : window.location.search;
    var re = new RegExp('&amp;'+q+'=([^&amp;]*)','i');
    return (s=s.replace(/^\?/,'&amp;').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>

4 个答案:

答案 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;