- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Javascript 创建一个简单的 CRUD 应用程序,但在显示本地存储中的数据表时遇到问题。
这就像制作一个 TODO 列表,但这是一个表格,并在一行和一列中输入数据。
我不知道如何清楚地解释这个问题,重要的是我希望输入表单并提交到本地存储的结果能够正确显示在表格中。
这是代码:
const
myForm = document.forms['my-form'] // form name pada tag html form
, table = document.querySelector('#myTable tbody')
, dataArr = JSON.parse(localStorage.getItem('dataArr') || '[]');
var selectedRow = null
var number = 0
// Tabel init
dataArr.forEach(row=>{
let newRow = table.insertRow()
newRow.insertCell().textContent = row.no = ++number
newRow.insertCell().textContent = row.inputNL
newRow.insertCell().textContent = row.inputJK
newRow.insertCell().textContent = row.inputNH
newRow.insertCell().textContent = row.inputA
newRow.insertCell().innerHTML = `<a onClick="onDelete(this)"><i class="fas fa-times"></i></a>`
})
function onFormSubmit() {
if (validate()) {
if (selectedRow == null) {
// Menambahkan entri ke LocalStorage :
dataArr.push(Object.fromEntries(new FormData(myForm).entries()))
localStorage.setItem('dataArr', JSON.stringify( dataArr ))
// Memasukkan Data pada Baris Baru
let newRow = table.insertRow()
newRow.insertCell().textContent = myForm.no.value = ++number
newRow.insertCell().textContent = myForm.inputNL.value
newRow.insertCell().textContent = myForm.inputJK.value
newRow.insertCell().textContent = myForm.inputNH.value
newRow.insertCell().textContent = myForm.inputA.value
newRow.insertCell().innerHTML = `<a onClick="onDelete(this)"><i class="fas fa-times"></i></a>`
}
resetForm();
}
}
// Function untuk Mereset Data yang sudah diSumbit di dalam Input
function resetForm() {
document.getElementById("no").value = "";
document.getElementById("inputNL").value = "";
document.getElementById("inputJK").value = "Pria";
document.getElementById("inputNH").value = "";
document.getElementById("inputA").value = "";
selectedRow = null;
}
// Function untuk Delete Data
function onDelete(td) {
if (confirm('Apa kamu yakin ingin Menghapus Data ini?')) {
row = td.parentElement.parentElement;
document.getElementById("myTable").deleteRow(row.rowIndex);
resetForm();
}
hapusDataLocal(td.parentElement.parentElement)
}
function hapusDataLocal(dataItem) {
dataArr.forEach(function(task, index) {
if (dataItem.textContent === task ) {
dataArr.splice(index, 1);
}
});
localStorage.setItem(dataArr, JSON.stringify(dataArr))
}
// Function untuk Memvalidasi Data
function validate() {
isValid = true;
if (document.getElementById("inputNL").value == "" || document.getElementById("inputJK").value == "" || document.getElementById("inputNH").value == "" || document.getElementById("inputA").value == "") {
isValid = false;
alert("Isi Semua Formnya dengan Benar!");
}
return isValid;
}
<!-- Registration Form -->
<div class="container w-50 mt-3 shadow p-3 mb-5 bg-white rounded">
<div class="p-3">
<h1 class="mb-4">Registration Form</h1>
<form class="task-form" name="my-form" onsubmit="event.preventDefault();onFormSubmit();" autocomplete="off">
<input type="hidden" name="no" id="no" value="">
<label for="inputNL" class="form-label">Nama Lengkap</label>
<input type="text" id="inputNL" name="inputNL" class="form-control mb-2" placeholder="Nama Lengkap">
<label for="inputJK"class="form-label">Jenis Kelamin</label>
<select class="form-select mb-2" id="inputJK" name="inputJK">
<option value="Pria">Pria</option>
<option value="Wanita">Wanita</option>
</select>
<label for="inputNH" class="form-label">No HP</label>
<input type="number" id="inputNH" name="inputNH" class="form-control mb-2" placeholder="No HP">
<label for="inputA" class="form-label">Alamat</label>
<textarea id="inputA" name="inputA" class="form-control mb-2" style="min-width: 100%" placeholder="Alamat"></textarea>
<input type="submit" value="Submit" class="btn btn-primary btn-md my-3">
</form>
</div>
</div>
<!-- Table -->
<div class="container mt-3 shadow p-3 mb-5 bg-white rounded">
<div class="p-3">
<table class="table" id="myTable">
<thead>
<th scope="col">#</th>
<th scope="col">Nama Lengkap</th>
<th scope="col">Jenis Kelamin</th>
<th scope="col">No HP</th>
<th scope="col">Alamat</th>
<th scope="col">Aksi</th>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
这是表中的问题,数据与列不匹配。
而我想要的实际结果是这样的。
最佳答案
做类似的事情...
const
myForm = document.forms['my-form'] // unique reference for ALL form's elements
, myTableTBody = document.querySelector('#myTable tbody')
, dataNL = JSON.parse(localStorage.getItem('dataNL') || '[]')
;
// init table
dataNL.forEach(row=>
{
let newRow = myTableTBody.insertRow()
newRow.insertCell().textContent = row.no
newRow.insertCell().textContent = row.inputNL
newRow.insertCell().textContent = row.inputJK
newRow.insertCell().textContent = row.inputNH
newRow.insertCell().textContent = row.inputA
newRow.insertCell().textContent = ''
})
myForm.onsubmit = e =>
{
e.preventDefault()
// add entries into local storage :
dataNL.push(Object.fromEntries(new FormData(myForm).entries()))
localStorage.setItem('dataNL', JSON.stringify( dataNL ))
// insert new row
let newRow = myTableTBody.insertRow()
newRow.insertCell().textContent = myForm.no.value
newRow.insertCell().textContent = myForm.inputNL.value
newRow.insertCell().textContent = myForm.inputJK.value
newRow.insertCell().textContent = myForm.inputNH.value
newRow.insertCell().textContent = myForm.inputA.value
newRow.insertCell().textContent = '' // Action
}
关于Javascript 显示本地存储阵列中的数据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68987657/
我有一个关于将字符串分配给数组编号的问题。 我已经声明了字符串数组,例如。 String[] answer = {"yes", "no", "maybe"}; 如何在不使用这种方法的情况下将每个字符串
我正在为云数据库使用 Firebase 编写一个 Android 应用程序。它基本上是一个多项选择调查问题应用程序。导入到我的 Firebase { "multiple_choice" : {
我想将输入文件中的以下行存储到 3D 数组中(不包括第一行。)第一行表示后续行的数量。 3 4 9368 86 843 23224 4 7323 2 2665 2665 8447 47 843 527
这是我关于容器的小大问题,尤其是数组。 我正在编写一个物理代码,主要操纵一大组(> 1 000 000)“粒子”(每个粒子有 6 个 double 坐标)。我正在寻找最佳方式(在性能方面)来实现一个类
我有一个超链接,我需要在 Angular 4 中创建一个路由器链接。我有很多部分指向 url,其中一部分是一个数组。我不确定如何让数组将自己拆分成 routerlink 数组的部分。 以这个人为的例子
大家好,我有一个轮子选择器在工作,但目前它正在为所有轮子提取 0-9 的数字。我希望能够设置值而不是 0-9 我希望它是从数组或字符串中提取的单词,所以我可以输入它们 myslef 因为我不确定目前从
我正在尝试使用 Spotify API 并进入数组。 const App = () => { const [isLoading, setIsLoading] = useState(true);
我尝试创建 Tic Tac Toe,我能够填满我的棋盘,并且能够检查行和列以确定谁获胜。然而,我需要一些帮助来检查对角线,看看谁赢了。这是我到目前为止所拥有的。我是初学者,所以请不要让代码太难。 检查
--in the package type t_array is array (natural range <>) of std_logic_vector (7 downto 0); type p_a
我在访问字符串数组时遇到困难。它被声明为私有(private)数组并填充在类的构造函数中。我定义了一个 Get 函数。问题是当我在编译时调用此函数时出现错误,提示我无法访问在类中声明的私有(priva
无法弄清楚推送到 Moose 数组的语法(我确信这很明显,而且我很愚蠢)。这是 this question 的延续.在我看来,对于我的具体情况,我需要的不仅仅是一个简单的值。尝试使用 Moose 式的
我有一个 3d 数组,我正在尝试从中获取刺伤列表。换句话说,给定数组: t = np.array([[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]) arr
我正在寻找绘制一个 3 维数组。有没有一种方法可以直接输入数组,绘制体素并在 3d 数组中的位置产生的坐标处绘制实际值(颜色)?到目前为止我发现的所有方法(例如 ax.voxels、mlab.poin
我正在尝试使用 Knockout 创建一个简单的电子表格。我试图让每个单元格都可观察,以便在发生变化时,我可以评估值并进行相应的计算。因此,如果他们在单元格中输入 6+7,我可以评估并将该值更改为总数
我有当前时间和这组时间。我想计算出下一次与当前时间最接近的时间。 let date = NSDate() let calendar = NSCalendar.currentCalendar() let
我想在我的小程序中创建一个二维图像数组。我需要一个 4x4 网格,其中有 4 个图像,每个图像 4 个随机分布在阵列中。这里有一些答案,但我不明白如何使用它们。 最佳答案 您可以声明 Image[][
基本上,此代码列出了“可用”挑战,其中 complete = 0 并在每个列表中都有一个接受submit 按钮。到目前为止,我一次只能列出一项,因为列出的多个按钮无法识别匹配 ID $echo 任何人
我正在尝试创建一个带有动态变量的过滤数组。我创建一个包含过滤器键的数组,然后创建一个过滤后的数组,该数组只应返回与第一个数组中的键匹配的项目。 带有过滤器键的数组:$scope.participant
我是一个相对年轻的开发人员,我对一些事情感到困惑。 这是我的代码: function pairElement(str) { var arr = []; var pairs = [
我正在 Angular 中创建一个函数,我想抓取所有博客文章,其类别与单击的按钮相匹配,我的 Firebase 中有 3 个不同的字段,标题为类别 1、类别 2 和类别 3。例如,当用户单击新闻通讯时
我是一名优秀的程序员,十分优秀!