2016-07-07 12 views
1

Ich habe einen Codeabschnitt, den ich in eine Funktion einbinden möchte, die den Wert eines Cookies zurückgibt.Wie man dies in eine JavaScript-Funktion einbinden?

document.cookie.split(';').filter(function(s) { 
    return s.search('constituency=') == 1 
})[0].split(/(=)/).slice(2).join(''); 

In meiner Browser-Konsole gibt dies den Cookie-Wert perfekt zurück. Ich möchte in der Lage sein, diesen Wert in einer anderen Funktion zu verwenden, aber wenn ich versuche, es in eine Funktion zu verpacken, heißt es 'undefiniert'.

Kann mir jemand helfen zu verstehen, warum?

function splitValues() { 
    document.cookie.split(';').filter(function(s) { 
    return s.search('constituency=') == 1 
    })[0].split(/(=)/).slice(2).join(''); 
} 
+0

Sie müssen hinzufügen 'Return' in Zeile 2, kurz vor' document.cookie'. Right know you function gibt 'void' zurück, was 'undefined' ist. –

Antwort

5

müssen Sie den Wert

function splitValues() { 
    return document.cookie.split(';').filter( 
    function(s) { 
     return s.search('constituency=') == 1 
    })[ 0 ].split(/(=)/).slice(2).join(''); 
} 

Beachten Sie die return vor document

+0

Danke, so einfach, aber es war ewig ratlos! – Alistair

2

Sie haben vergessen, die return Aussage zurück:

function splitValues() { 
    return document.cookie.split(';').filter(function(s) { 
    //^^\\ 
    return s.search('constituency=') == 1 
    })[0].split(/(=)/).slice(2).join(''); 
} 

Die return Anweisung ist die erste Anweisung innerhalb die Funktion.

2

Damit eine Funktion funktioniert, müssen Sie das Ergebnis zurückgeben. In Ihrem Fall geben Sie nur das Ergebnis der Methode .search() innerhalb der Funktion der Methode .filter() zurück.

Sie müssen Rückkehr das Ergebnis der .filter() Methode als Ganzes als auch für sie arbeiten: ↓

return document.cookie.split(';').filter(function(s) {...}... 

Die gesamte Funktion:

function splitValues() { 
    return document.cookie.split(';').filter(function(s) { 
     return s.search('constituency=') == 1 
    })[0].split(/(=)/).slice(2).join(''); 
} 
Verwandte Themen