【发布时间】:2011-06-12 22:51:41
【问题描述】:
我正在构建一个 HTML5 网络应用程序,我尝试使用 contenteditable 功能对文本进行就地编辑,但由于某种原因,我无法让“编辑”工作。
编辑:我使用的是 Chrome 12.0.xx
- 突出显示元素(我可以通过 CSS 看到)
- 我还测试了
object.isContentEditable,它返回true - 我尝试将
<lable>更改为<div>、<p>、<span>等其他元素,但没有任何效果。只有<textarea>有效,但我猜这与HTML5 或contenteditable 属性无关。李> -
blur事件在退出编辑模式时被触发。(我可以从调试器中看到)
有一些线索有问题How do I figure out why the contenteditable attribute doesn't work? 我尝试关闭所有 CSS 但没有运气。
唯一的事情是,我通过 javascript 添加我的元素而不是 HTML 源代码
JS 代码:
var newLi =document.createElement("li");
var newLable=document.createElement("lable");
newLable.className="labletext";
newLable.contentEditable="true";
newLable.innerText=String(localStorage["task."+i+".taskValue"]);
newLable.addEventListener('blur',editTask,false);
newLi.appendChild(newLable);
Parent.appendChild(newLi);
function editTask()
{
var keyid=this.id;
var startchar = keyid.lastIndexOf("_");
var endchar=keyid.length;
var taskId=parseInt(keyid.substring(startchar+1,endchar));
localStorage.setItem("task."+taskId+".taskValue",this.innerText);
loadTasks("tasklist");
}
【问题讨论】:
-
如果您想转到字符串的末尾,则不需要向
substring提供第二个参数。只要keyid.substring(startchar+1)就好了。 -
你知道
addEventListener在IE8中不起作用,对吧? -
你知道
innerText在 Firefox 中不起作用,对吧? -
嗨,谢谢你告诉我。我更改了代码。另外,我正专注于为 chrome 制作这个应用程序,所以 IE8 对我来说现在不是问题。我会记住这一点。
标签: javascript html google-chrome