Javascript/HTML 如何通过 HTML 输入/文本框动态删除 javascript 数组的元素

标签 javascript html arrays

该网站的目的是存储和订购书籍标题,我需要这样做,以便用户可以删除他们输入到数组中的书籍。我对 Javascript 还很陌生,但有一点 Java 和 C# 经验。

在这个问题上有点卡住了。正在阅读一些有关使用拼接和删除从代码中的数组中删除元素的内容。但是当我为它创建一个函数时,它会删除数组中的所有内容,而不仅仅是文本框输入字符串。

出于我的评估目的,需要在不使用第三方库的情况下完成。

我知道这可能不是存储数据的最佳方式,因为它会在刷新或关闭页面时清除。

HTML:

<!DOCTYPE html>
<html>
  <body>
   <h1> Prototype Book Storage and Display </h1>
     <form id = "formWrapper">
     Search<br>
     <input id="myTextBox" type="text" name="search">
     <br>
     <input onClick="submitData()" type="button" value="Submit Book">
     <input onClick="printBooks()" type="button" value="Find Book">
     <input onClick="deleteData()" type="button" value = "Delete Book">
     <p id = "booktitle"></p>
   </form>
  </body>
</html>

Javascript:

  var myFormData = [];   //declare an array
  var value1;

  //Prints My Books to a list
  function printBooks() {
        clearBook();
        alert(myFormData);
        document.getElementById('booktitle').innerHTML = myFormData;

    }
  //Submits input to array
  function  submitData()
  {

   value1 = document.getElementById("myTextBox").value;
   myFormData.push(value1);
   alert(myFormData);
   clearField();
  }

   //Deletes data from the array
  function deleteData()
  {
    deleteValue = document.getElementById("myTextBox").value;
    myFormData.splice(deleteValue);
    alert(deleteValue + " " + "Deleting your book");
  }

  //clears textbox field
  function clearField()
  {
    var txt2 = document.getElementById("myTextBox");
    txt2.value = "";
  }
  //Refreshes book object model
  function clearBook()
  {
   var txt3 = document.getElementById("booktitle");
   txt3.value="";
  }  

最佳答案

问题出在

myFormData.splice(deleteValue);

splice()需要一个起始索引,您正在传递一个字符串值。请参阅How do I remove a particular element from an array in JavaScript?关于如何使用它。

在你的情况下是

// get the index of the value in the array or -1 if it does not exist
var index = myFormData.indexOf(deleteValue);
// only try removing it, if it exists in the array
if (index !== -1) {
    myFormData.splice(index, 1);
}

关于Javascript/HTML 如何通过 HTML 输入/文本框动态删除 javascript 数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47047358/

相关文章:

javascript - Angular 7 中的 Controller 在哪里,因为它遵循 mvc 架构

javascript - 编辑存储在服务器上的文本文件

java - 使用二维数组乘以表

java - 数组 "out of bounds"

javascript - 如何在 d3.js 中像这个 gif 一样使圆圈动画连续悬停?

javascript - 将未知数量的参数传递给 js 构造函数

javascript - 可以淡出嵌入的 Youtube 视频吗?

javascript - 如何避免 html5 Canvas 上的永久粒子痕迹?

javascript - 复选框 onclick 不会更改通过 jscript 检查

c - 使用qsort在c中指向char *的指针数组