javascript - 为里面的文本添加编辑选项
问题描述
我想li.innerHtml
在单击<li>
它时更改它会创建新的输入,我可以在其中更改<li>
's 的文本,但之后我想保存它,它不能正常工作。<li>
单击该文本时,我需要更改每个文本<li>
function setText(elem, text){
elem.innerHTML += text;
}
var arr = ["one", "two", "three"];
for( var i = 0; i < arr.length; i++ ){
var li = document.createElement("li");
li.addEventListener("click", changeText);
setText(li, arr[i]);
var ul = document.createElement("ul");
document.body.appendChild(ul);
ul.appendChild(li);
}
var input = 0;
function changeText(){
input = document.createElement("input");
input.addEventListener("blur", saveText);
document.body.appendChild(input);
input.value = this.innerHTML;
}
function saveText(){
li.innerHTML = this.value;
}
解决方案
ID
您可以在创建时分配一个li
,然后将其添加id
为数据属性,input
以便您知道哪个输入已更改以及li
要更新哪个。
这里
function setText(elem, text){
elem.innerHTML += text;
}
var arr = ["one", "two", "three"];
for( var i = 0; i < arr.length; i++ ){
var li = document.createElement("li");
li.id = i;
li.addEventListener("click", changeText);
setText(li, arr[i]);
var ul = document.createElement("ul");
document.body.appendChild(ul);
ul.appendChild(li);
}
var input = 0;
function changeText(event){
input = document.createElement("input");
input.addEventListener("blur", saveText);
document.body.appendChild(input);
input.setAttribute("data-liID", event.target.id);
input.value = this.innerHTML;
}
function saveText(event){
document.getElementById(event.srcElement.getAttribute("data-liID")).innerHTML = this.value
}
推荐阅读
- javascript - 如何计算 iframe 的高度?
- python - 使用 BeautifulSoup 抓取网页
- c# - 升级到 .NET Framework 4.8 时的程序集绑定问题
- c# - ASP.NET MVC 无法在 HTTP 标头后重定向
- intellij-idea - 如何让 IntelliJ IDEA 对齐一个类的所有字段?
- file - VB6 文件追加跳行
- python - 如何生成由雅虎金融的几只股票调整后的收盘价组成的熊猫数据框?
- c++ - 如果禁用,小部件无法发送信号
- javascript - window.renderCustomMView 不是 React 中的函数
- python - Visual Studio Code:运行按钮显示 Python 脚本但不显示 Ruby