2016-03-20 16 views
-5

Mein JavaScript-Code wird einfach nicht funktionieren. Wenn ich einfach <script>alert("alert");</script> in meinen Code einfüge, funktioniert es normal, aber der große Teil des Skripts im folgenden Code wird scheinbar ignoriert. Der Code soll ein verstecktes Formular übermitteln, wenn der Benutzer auf einen Link klickt. Ist das eine einfache fehlende geschweifte Klammer, oder etwas schwieriger?Javascript-Code führt nicht

Der Kodex folgt:

<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> 
+2

Erhalten Sie Fehler in der Konsole des Browsers gemeldet? – nnnnnn

+0

Ich glaube nicht. –

+0

Die letzte Funktion scheint eine geschweifte Klammer zu fehlen. Verkleinern Sie Ihre Code-Eigenschaft. – Biffen

Antwort

2

Dieser Abschnitt

if (new Date() > new Date(getCookie('expiry') || getCookie('expired') == 'TRUE') { 

ist eine schließende Klammer für die if-Anweisung fehlt.

Die ganze Funktion benötigt etwas Syntaxarbeit, also sollte das unten beheben.

Wie in einem Kommentar oben erwähnt, gab es in der Tat Konsolenfehler durch Ihren Code verursacht. Überprüfen Sie diese zuerst und Sie werden schnell herausfinden, warum etwas nicht funktioniert.

+0

Yeah Entschuldigung, ich versuche dies in Mobile Safari zu schreiben. Selbst bei Desktop-Safari fehlt die Funktionalität des inspect-Elements, daher habe ich wirklich keine richtigen Tools. –

+0

Desktop Safari hat tatsächlich Entwicklungswerkzeuge, sie sind nur standardmäßig nicht aktiviert. Wenn Sie sie aktivieren möchten, öffnen Sie die Einstellungen von Safari, klicken Sie auf "Erweitert" und aktivieren Sie das Kontrollkästchen neben "Develop-Menü in der Menüleiste anzeigen". – ellitt

2

Sie sollten einen Blick auf Ihre JavaScript-Konsole:

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 

Ihr Code einige Klammern in der Funktion fehlt "onsubmit()".

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! 
+0

Es tut mir leid. Ich habe keine JavaScript-Konsole –

0

Sie verpassen einen abschließenden Parameter in Ihrer allerletzten "Wenn" Anweisung. Folgen Sie unten:

Ihr Code

if (new Date() > new Date(getCookie('expiry') || getCookie('expired') == 'TRUE') {...} 

Fehler: new Date(getCookie('expiry') < --- fehlende Parameter schließen ")"

Corrected Code:

if (new Date() > new Date(getCookie('expiry'))|| getCookie('expired') == 'TRUE') {...} 

Arbeitscode hier: http://codepen.io/theConstructor/pen/EKWvyJ?editors=1010

hoffe das hilft.

0

Es ist besser, den Code zu debuggen, um Fehler zu erkennen. Ich habe einen Fehler, aber ich weiß nicht, ob es das ist nur eins:

function load() { 

alert('load'); 
document.getElementByName('link').onclick=onsubmit; 

Es ist getElementsByName so ist es Elemente, die nicht Element und auch müssen Sie welches Element von ihnen Sie zielen so wählen, wenn es nur ein Element mit dem gleichen Namen dann können Sie es so nennen:

document.getElementsByName('link')[0].onclick=onsubmit; 
Verwandte Themen