javascript - 我无法使用函数通过 DOM 编辑(拼接)我的数组中的特定索引
问题描述
所以我想改变一个特定的索引,例如“Lisa”,我想通过我创建的DOM来做到这一点。如您所见,我正在使用循环将每个表格作为表格取出<tr>
。<td>
我也在做的是给他们每个人一个id='edit"+[i]+"'
我试图将每个数组与每个 id 组合在一起,因为它们总是循环在一起。
var people = ["Olle", "Lisa", "Kalle", "Elin", "Johan", "Linda"];```
function listNames(){
varMyinnerHTLM = "<table class='nametable table table-dark table-hover'>";
varMyinnerHTLM += "<tbody>";
varMyinnerHTLM += "<tr><th>Namn</th></tr>";
for(i=0;i<people.length;i++){ //Loopar ut arrayens namn som en lista.
varMyinnerHTLM += "<tr><td><a href='#'>"+people[i]+"</a><button type='button' id='edit"+[i]+"' class='close' aria-label='Close'onClick='edit()'><span aria-hidden='true'>✏</span></button><button id='close"+[i]+"' type='button' class='close' aria-label='Close' onClick='removeRow()'><span aria-hidden='true'>×</span></button></td></tr>";
}
varMyinnerHTLM + "</tbody>";
varMyinnerHTLM += "</table>";
varMyinnerHTLM += "<input type='text' id='newname' class='nameinput input-group-text' placeholder='Namnet på personen'></br>";
varMyinnerHTLM += "<button type='button' id='addName' class='btn btn-primary' onClick='addName()'>Lägg till</button>";
varMyinnerHTLM += "<button type='button' id='reset' class='btn btn-light' onClick='reset()'>Nollställ</button>";
varMyinnerHTLM += "<button type='button' class='hide btn btn-success' onClick=''>Godkän</button>";
document.getElementById("jspage").innerHTML = varMyinnerHTLM;
}
所以我想要实现的是我希望能够通过某种onClick = "function()"
方式编辑我的数组中的特定索引。必须在输入中给出该值,然后该函数edit()
将继续执行以下操作:
var fullid = people[i] + edit[i]
function edit(){
nameValue = document.getElementById('newname').value;
if(nameValue === ""){
$('.nameinput').attr('style', "border-raidus: 5px; border:#C21414 1px solid;");
$('#newname').attr('placeholder', "Ange nytt namn").placeholder();
}else{
people.splice(fullid, 1, nameValue);
return listNames();
}
}
也许它明显与否,但我认为我people.splice(fullid, 1, nameValue);
的方法是错误的,但可能是错误的。因为目前它只编辑我的数组的第一个索引,这是Olle
我想要编辑的时候Lisa
。
我希望这足以理解我的动机。我想用 javascript 解决它,但如果它使用 jquery 也可以。
解决方案
更改edit()
函数,使其将数组索引作为参数。splice()
如果您只是更改 1 个元素,则无需使用,只需分配给数组索引即可。
function edit(i){
nameValue = document.getElementById('newname').value;
if(nameValue === ""){
$('.nameinput').attr('style', "border-raidus: 5px; border:#C21414 1px solid;");
$('#newname').attr('placeholder', "Ange nytt namn").placeholder();
}else{
people[i] = nameValue;
listNames();
}
}
然后更改 HTML,以便将i
其作为参数传递给函数。
varMyinnerHTLM += "<tr><td><a href='#'>"+people[i]+"</a><button type='button' id='edit"+[i]+"' class='close' aria-label='Close'onClick='edit(" + i + ")'><span aria-hidden='true'>✏</span></button><button id='close"+[i]+"' type='button' class='close' aria-label='Close' onClick='removeRow()'><span aria-hidden='true'>×</span></button></td></tr>";
我不确定你为什么要从 中返回一些东西edit()
,返回值不用于任何东西。并且listNames()
不返回任何东西。只需调用listNames()
而不使用return
.
推荐阅读
- c++ - 如何安排操作在未来时间运行
- c++ - 有没有办法使用 glDrawPixels 渲染单通道灰度图像?
- android-studio - Android Studio 3.5 中的 Gradle `project` 变量
- c - 在 C 中的循环中读取字符串时从 sscanf 获取偏移量
- eclipse - 从 Eclipse 工作区中删除文件夹
- elasticsearch - 对 SQL 的弹性查询
- java - 为什么我得到@WebServlet 注释但没有实现javax.servlet.http.HttpServlet 接口。使用 vaadinCDI Servlet 时出现错误
- php - 通过 Woocommerce 管理订单中的自定义操作按钮使用订单项目元数据
- python - AttributeError:“模块”对象没有运行可执行文件的属性“__version__”
- c++ - 为什么排序适用于结构而不适用于 int 向量