2016-07-24 14 views
0

Ich weiß, dies ist wahrscheinlich eine einfache Frage, aber ich bin neu in der Web-Entwicklung, so mit mir. Ich versuche, einen Benutzereingabewert zu nehmen, der über ein HTML-Eingabefeld eingegeben wird, und es als einen Wert innerhalb meiner Funktion (die NegKeyword-Funktion in meinem Code, um genauer zu sein). Das Problem, das ich denke, ist, dass dieser Eingabewert als eine Variable gespeichert wird. Wenn der Code zum ersten Mal im Speicher gespeichert wird, wird er als "" gespeichert, da der Benutzer noch nichts eingegeben hat. Wie bekomme ich es so, wenn der Benutzer etwas eingibt, ersetzt es leer oder "" mit was immer der Benutzer eingibt?Benutzereingabewerte in eine Funktion einfügen

Was ich im Grunde als nächstes passieren möchte, ist der Benutzer wird auf eine Schaltfläche klicken, es wird dann vergleichen, was der Benutzer eingibt, was die "negKeyword" -Funktion ausgibt und gibt ein Ergebnis, ob sie übereinstimmen oder nicht (diese Aktion wird demonstriert in meiner BooleanKeyword Funktion in meinem Code).

Hier ist mein Code.

var input = document.getElementById("input").value; 
 
var arr = ['no', 'not', 'checked']; 
 
var text = ''; //JS output variable. 
 
var keyword = 'leak'; //Individual keyword. 
 

 
function negKeyword() { 
 
\t \t 
 
for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text == input) { break; } \t 
 
\t text = arr[i] + ' ' + keyword; 
 
\t 
 
\t } 
 
\t return text; 
 
} 
 
\t 
 
function booleanKeyword() { \t 
 

 
\t if (input == negKeyword()) { 
 
\t \t 
 
\t \t document.getElementById("result").style.color="green"; 
 
\t \t document.getElementById("result").innerHTML="Match"; 
 
\t 
 
\t } else { 
 
\t 
 
\t \t document.getElementById("result").style.color="red"; 
 
\t \t document.getElementById("result").innerHTML="No Match"; 
 
\t 
 
\t } 
 
\t 
 
} 
 

 
document.getElementById("result2").innerHTML=keyword;
<label for="Full Negative Keyword">Negative Keyword</label> <input id="input" type="text" /> 
 

 
<div id="message">Result: <span id="result"></span></div> 
 
<div id="message">Keyword: <span id="result2"></span></div> 
 
     
 
     <button id="test" onclick="booleanKeyword()">Click to Test</button>

+0

Hallo, Sie wollen, dass, wenn darauf geklickt wird, wird es den Eingangswert zurückgesetzt? –

+0

Grundsätzlich ja, das war die Benutzereingabe kann in der Funktion verwendet werden. –

Antwort

0

Sie können die Eingabe des Wertes wieder abrufen, indem sie immer und auf die gleiche Variable zuweisen (aber innerhalb der Funktion, die nach dem Button-Klick aufgerufen wird).

var input = document.getElementById("input").value; 
 
var arr = ['no', 'not', 'checked']; 
 
var text = ''; //JS output variable. 
 
var keyword = 'leak'; //Individual keyword. 
 

 
function negKeyword() { 
 

 
    input = document.getElementById("input").value; 
 
\t \t 
 
    for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text == input) { break; } \t 
 
\t text = arr[i] + ' ' + keyword; 
 
\t 
 
\t } 
 
\t return text; 
 
} 
 
\t 
 
function booleanKeyword() { \t 
 

 
     input = document.getElementById("input").value;//The variable is reassigned, only after the click 
 

 
\t if (input == negKeyword()) { 
 
\t \t 
 
\t \t document.getElementById("result").style.color="green"; 
 
\t \t document.getElementById("result").innerHTML="Match"; 
 
\t 
 
\t } else { 
 
\t 
 
\t \t document.getElementById("result").style.color="red"; 
 
\t \t document.getElementById("result").innerHTML="No Match"; 
 
\t 
 
\t } 
 
\t 
 
} 
 

 
document.getElementById("result2").innerHTML=keyword;

Edit: hat den gleichen Code zu negKeyword() Funktion, wie es auch die Eingabe erfordert.

+0

Das hat funktioniert, danke! –

+0

Nicht die beste Lösung, anstatt den Eingangswert aus dem DOM erneut zu lesen, sollten Sie das 'this'-Objekt im Ereignis-Listener verwenden und seinen Wert an alle Funktionen übergeben, die es benötigen (als Parameter). – trincot

+0

Stimmt, ich wollte den Code nur so wenig wie möglich ändern. – yuriy636

0

Es funktioniert nicht, weil Ihre Variableneingabe immer "" ist. Sie müssen ihm bei jedem Klick auf die Schaltfläche einen neuen Wert zuweisen. Ich habe gerade Ihren Code für die Eingabe in die BooleanKeyword() -Funktion verschoben. Jetzt funktioniert alles gut.

Jedes Mal, wenn so etwas nicht funktioniert, versuchen Sie einfach, Werte zu protokollieren/zu alarmieren.

Zum Beispiel könnten Sie nur alarmieren (Eingabe + '' + negKeyword()); oben auf der booleanKeyword() Funktion und Sie würden Problem selbst sehen.

var input; 
 
var arr = ['no', 'not', 'checked']; 
 
var text = ''; //JS output variable. 
 
var keyword = 'leak'; //Individual keyword. 
 

 
function negKeyword() { 
 
     
 
for (i = 0; i < arr.length; i++) { 
 
    
 
    if (text == input) { break; } 
 
    text = arr[i] + ' ' + keyword; 
 
    
 
    } 
 
    return text; 
 
} 
 
    
 
function booleanKeyword() { 
 
    input = document.getElementById("input").value; 
 
    if (input == negKeyword()) { 
 
     
 
     document.getElementById("result").style.color="green"; 
 
     document.getElementById("result").innerHTML="Match"; 
 
    
 
    } else { 
 
    
 
     document.getElementById("result").style.color="red"; 
 
     document.getElementById("result").innerHTML="No Match"; 
 
    
 
    } 
 
    
 
} 
 

 
document.getElementById("result2").innerHTML=keyword;
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title></title> 
 
</head> 
 
<body> 
 
<label for="Full Negative Keyword">Negative Keyword</label> <input id="input" type="text" /> 
 

 
<div id="message">Result: <span id="result"></span></div> 
 
<div id="message">Keyword: <span id="result2"></span></div> 
 
     
 
     <button id="test" onclick="booleanKeyword()">Click to Test</button> 
 

 
</html>

Verwandte Themen