【发布时间】:2021-07-14 12:51:56
【问题描述】:
我无法在监听器的点击事件中插入 indexOf 函数。它向我显示以下错误:
未捕获的类型错误:v.indexOf 不是函数
错误所在的代码:
function mostrar_datos(resp) {
let tabla = document.getElementsByClassName("table");
let fila = '';
let curso = '';
let version = '';
let programa = '';
let accion = '';
let anyadir = '';
let editar = '';
let borrar = '';
const indice = 0;
for(let i = 0; i < resp.length; i++) {
fila = tabla[0].insertRow(1);
curso = fila.insertCell(0);
version = fila.insertCell(1);
programa = fila.insertCell(2);
accion = fila.insertCell(3);
curso.innerHTML = resp[i].nombre_c;
version.innerHTML = resp[i].version;
programa.innerHTML = resp[i].contenido;
accion.innerHTML = '<a class="add" title="" data-toggle="tooltip"><i class="fas fa-plus"></i><a class="edit" title="" data-toggle="tooltip"><i class="fas fa-pen"></i><a class="delete" color="blue" title="" data-toggle="tooltip"><i class="fas fa-trash"></i>';
document.getElementsByClassName("edit")[0].addEventListener("click", function() {
t = document.querySelector(".table");
v = t.getElementsByTagName('td');
indice = v.indexOf(resp[i].nombre_c); // error indexOf is not a funtion
});
}
}
v 是一个 HTMLCollection,它是一个简单的索引数组。我认为 indexOf 在这种情况下不能使用,我尝试通过以下方式为我创建的函数更改它:
function mostrar_datos(resp) {
let tabla = document.getElementsByClassName("table");
let fila = '';
let curso = '';
let version = '';
let programa = '';
let accion = '';
let anyadir = '';
let editar = '';
let borrar = '';
const indice = 0;
for(let i = 0; i < resp.length; i++) {
fila = tabla[0].insertRow(1);
curso = fila.insertCell(0);
version = fila.insertCell(1);
programa = fila.insertCell(2);
accion = fila.insertCell(3);
curso.innerHTML = resp[i].nombre_c;
version.innerHTML = resp[i].version;
programa.innerHTML = resp[i].contenido;
accion.innerHTML = '<a class="add" title="" data-toggle="tooltip"><i class="fas fa-plus"></i><a class="edit" title="" data-toggle="tooltip"><i class="fas fa-pen"></i><a class="delete" color="blue" title="" data-toggle="tooltip"><i class="fas fa-trash"></i>';
document.getElementsByClassName("edit")[0].addEventListener("click", function() {
t = document.querySelector(".table");
v = t.getElementsByTagName('td');
editar("curso"); // error editar is not a funtion
});
}
}
function editar() {
$(this).parents("tr").find("td:not(:last-child)").each(function(){
$(this).html('<input type="text" class="form-control" value="' + $(this).text() + '">');
});
$(this).parents("tr").find(".add, .edit").toggle();
$(".add-new").attr("disabled", "disabled");
}
为什么我不能在这个点击事件中插入函数?
谢谢
【问题讨论】:
-
似乎编辑器未声明为函数。它被声明为一个空字符串
-
无论您如何将 HTMLCollection 转换为数组,数组中的项目都将是 HTMLElements。假设
nombre_c是一个字符串,当您尝试调用yourElement.indexOf(nombre_c)时,您将不断收到错误消息。相反,您应该致电yourElement.innerText.indexOf(nombe_c)(或yourElement.innerHTML.indexOf(nombe_c))
标签: javascript dom-events