将用户输入值插入函数

将用户输入值插入函数

问题描述:

我意识到这可能是一个简单的问题,但我是网络开发的新手,对我来说很裸露。我正在尝试通过html输入框输入用户输入值,并将其作为我函数内的值(代码中的negKeyword函数更具体)。我认为发生的问题是,这个输入值被存储为一个变量,所以当代码首次存储在内存中时,它被存储为“”,因为用户还没有输入任何东西。我如何得到它,以便当用户输入一些代替空白的东西或“”与用户输入的内容“将用户输入值插入函数

接下来我想要发生的事情是用户将点击一个按钮,然后它会比较用户输入的内容和“negKeyword”函数输出的内容并给出结果是否匹配(此操作已被演示在我的代码中的booleanKeyword函数中)。

这是我的代码。

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

嗨,你想,当点击时,它会重置输入值? –

+0

基本上可以,那是用户输入可以在函数中使用的。 –

你可以得到它,并分配给同一个变量(但就是按一下按钮后调用的函数内)再次检索输入的值。

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;

编辑:添加了相同的代码来negKeyword()功能,因为它需要的输入了。

+0

这工作,谢谢! –

+0

尽管不是最好的解决方案,但应该在事件侦听器中使用'this'对象,并将其值传递给需要它的任何函数(作为参数),而不是重新读取DOM中的输入值。 – trincot

+0

的确,我只是想尽可能少地改变代码。 – yuriy636

它不工作,因为你的变量输入总是“”。每次单击按钮时都必须为其分配新值。我只是将您的代码移动到BooleanKeyword()函数中进行输入。现在一切正常。

每当这样的事情不能正常工作时,只要尝试记录/提醒值即可。例如,你可以只提醒(输入+''+ negKeyword()); booleanKeyword()函数的顶部,你会看到自己的问题。

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>