我正在尝试制作一个基于文本的游戏,我需要使用 Javascript 和/或 jQuery 从 textarea 元素中搜索用户输入中的某些子字符串,以便触发唯一的响应。
我尝试使用 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”警报,但是如果子字符串中的任何字母按顺序出现,它会发出“Found”警报。例如,“t”、“es”和“substr”都提示“Found”以及确切的字符串。但是,如果我向字符串添加任何内容,它会警告“Nope”,例如,“test substr test substr”返回“Nope”。为什么会发生这种情况?
最佳答案
这是因为您要查找变量的子字符串,而不是查找输入字符串的子字符串。
您需要像这样翻转indexOf的参数:
if (textareaVal.indexOf(substr) !== -1) {
关于javascript - 为什么 IndexOf 不匹配整个子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57564320/