Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法知道是否正在插入值_Javascript_Arrays - Fatal编程技术网

Javascript 无法知道是否正在插入值

Javascript 无法知道是否正在插入值,javascript,arrays,Javascript,Arrays,我从用户那里获取输入,并将这些值保存在名为movie2的新数组中。如果用户再次输入,则应检查movie2数组中的值,如果匹配,则应弹出一个与已添加的值相同的弹出窗口,如果是不同的输入,则应将这些值添加到movie2数组中。我已经尝试过很多次了,但是无论用户输入的内容是什么,它都不会被添加进去 <!DOCTYPE html> <html> <head> <title>Movie Mania</title>

我从用户那里获取输入,并将这些值保存在名为movie2的新数组中。如果用户再次输入,则应检查movie2数组中的值,如果匹配,则应弹出一个与已添加的值相同的弹出窗口,如果是不同的输入,则应将这些值添加到movie2数组中。我已经尝试过很多次了,但是无论用户输入的内容是什么,它都不会被添加进去

<!DOCTYPE html>
   <html>
     <head>
    <title>Movie Mania</title>
    <link rel="stylesheet" type="text/css" href="Movie.css" >
    <script src="Movie.js"></script>
    </head>
     <body>

   <div class="content">

   <div class="matter">

   <p class="header">Movie Mania</p>
  <div class="regis">

   <form class="reg">

    <input type="text" name="user" id="movie" placeholder="Please enter any 
    movie name"  size="40"><hr>
    <div><input type="submit" class="button" value="Search" id="sub" 
    onclick="validation()" /></div >

   </form></div>
    </div>
     </div></body>
     </html>
是ES2016的一部分,尚未在所有浏览器中完全实现。改用。现在,当值不存在时,
indexOf()
返回
-1
,当值不存在时返回项的索引位置。你有:

if(movie2.indexOf(movie)==true){
这不是针对
indexOf()
进行测试的正确方法。如果
indexOf()
返回
0
,则表示该项位于数组的第一个位置(索引以0开头)。但是,由于您正试图将其与
true
进行比较,
true
将转换为一个数字(以执行数字对数字的比较),并将转换为
1
。由于
0
不等于
1
,测试将失败,并插入电影,即使电影已经存在

另外,当使用
var
关键字进行声明时,JavaScript没有块级作用域。如果在函数中的任意位置使用
var
声明变量,则其作用域为整个函数。因此,不能在if的一个分支中声明变量,然后在另一个分支中再次声明变量。实际上,您甚至不需要设置
name
变量,因为您对它所做的一切就是立即在
警报()中显示它。相反,您可以将字符串放入
警报()

此外,不要使用内联HTML事件属性(
onclick
等)

最后,看起来您实际上并没有尝试在任何地方提交数据。在这种情况下,不要使用
submit
按钮,只需使用常规的
按钮即可

//获取对按钮和文本框的引用
var btn=document.querySelector(“form.reg input[type=button]”;
//不要创建对DOM属性的引用,因为如果您决定
//要在以后获取其他属性的值,必须扫描DOM
//对元素的重新定义。只需获得一次对元素的引用,然后
//然后,您可以在需要时访问所需的任何属性。
var movie=document.getElementById(“movie”);
//设置单击事件处理程序
btn.addEventListener(“单击”,验证);
var movie2=[];
//你的两个功能是多余的。它们可以组合成一个:
功能验证(evt){
//访问所需DOM对象的属性(应始终修剪用户输入)
var mv=movie.value.trim();
//输入的快速测试:
如果(mv==“”){
警报(“您没有输入任何内容!”);
返回;
}
//如果到目前为止,有输入,那么测试看看它是否已经在数组中
var message=“”;
如果(电影2.indexOf(mv)>-1){
message=“电影已添加到阵列2!!!!”;
}否则{
电影2.推送(mv);
message=“电影已添加到阵列2”;
}
警报(信息);
//仅用于测试:
console.clear();
控制台日志(电影2);
}

电影狂热


includes()方法确定字符串是否包含 指定字符串的字符。如果 字符串包含字符,否则为false

因此,我们将不使用includes()方法来比较/搜索字符串。 有多种方法可以在字符串数组中搜索字符串。 我使用

indexOf()
indexOf()方法返回字符串中指定值第一次出现的位置。 如果要搜索的值从未出现,则此方法返回-1

在将电影添加到阵列的位置,无需再次从输入框读取数据。更好的方法是清理输入,验证它,并将其作为输入提供给插入(电影)

这是我的示例代码

var movie1=[“巴胡巴利”、“最终目的地”、“汽车”、“P.K”、“巴贾兰吉·巴贾安”、“部队”];
var movie2=[];
函数验证()
{
var movie=document.getElementById(“movie”).value;
movie=movie.trim();
if(!movie)//其验证输入为空未定义null
{ 
var name2=“请输入您最喜爱的电影名称”;
警报(名称2);
}
else if(movie1.indexOf(movie)>-1)//检查电影是否已经存在
{ 
var name2=“我们的数据库中存在电影”;
警报(名称2);
} 
其他的
{
插入(电影);
}
}    		
函数插入(电影)
{
如果(电影2.indexOf(电影)>-1)
{
var name2=“电影已添加到阵列2”;
警报(名称2);
}
其他的
{
电影2.推送(电影);
var name2=“电影添加到Array2”;
//警报(名称2);
对于(var i=0;i

电影狂热
电影狂热



.includes()
不太受浏览器支持。尝试使用
.indexOf()
查看它是否有效。您发布的代码在HTML中具有
验证
功能,JS文件具有
插入
功能。您能发布完整的工作代码吗..您使用的是哪种浏览器?请参见浏览器支持。现在使用“indexOf”是一个更好的选择。请单击
,并创建一个“查看我的更新答案”,以解决您的最新编辑。感谢您抽出时间!!如果我给出了相同的输入,它就不会弹出,因为它已经被添加了,这就是为什么,因为movie2阵列每周一次刷新
indexOf()