我正在尝试制作一个基于文本的游戏,我需要使用Javascript和/或jQuery从文本区域元素中搜索用户输入的某些子字符串,以触发唯一的响应。
我尝试使用PHP将输入作为表单数据提交,但就我的代码而言,使用JS/jQuery更为简单。我目前正在使用indexOf()方法。
var substr = "test substr";
function test() {
var textareaVal = $("#wiyetxt").val();
if (substr.indexOf(textareaVal) !== -1) {
alert("Found");
}
else {
alert("Nope");
}
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="wiyetxt"></textarea>
<input type="button" onclick="test();" value="Send">
<input type="reset" value="Clear">
当我的输入包含字符串"test substr“时,我期望我的函数提醒"Found”,但是如果子字符串中的任何字母按顺序出现,它就会提醒“查找”。例如,"t“、"es”和"substr“--所有警报-- "Found”以及确切的字符串。但是,如果在字符串中添加任何内容,它会警告"Nope",例如,"test substr test substr“返回"Nope”。为什么会发生这种事?
发布于 2019-08-19 21:51:53
这是因为您正在查找变量的子字符串,而不是查找输入字符串的子字符串。
您会想要像这样翻转indexOf的参数:
if (textareaVal.indexOf(substr) !== -1) {发布于 2019-08-19 21:53:33
除非我误解了,我认为问题是您试图检查substr是否包含文本区域中的值,但实际上应该检查相反的值。也就是说,文本区域中的值是否包含子字符串?
尝试将表达式从以下位置翻转:
substr.indexOf(textareaVal) 至
textareaVal.indexOf(substr) 发布于 2019-08-19 21:51:36
ES6方式:
if (textareaVal.includes(substr)) {
alert("Found");
} else {
alert("Nope");
}https://stackoverflow.com/questions/57564320
复制相似问题