我正在尝试将可疑的DIV与作为表单一部分的textarea同步。
我从DIV中提取innerHTML
但我希望能够从img
标记中删除嵌套格式(粗体,斜体,下划线等)。在访问div的innerHTML之前删除图像上的任何格式可能更容易,而不是在html上使用正则表达式。
我可以使用:
document.execCommand('removeFormat', false, null);
但我怎样才能删除图片上的格式?
(另外我需要在图像上使用ALT标签,而execCommand
/ insertImage
似乎无法完成。这是正确的吗?我最终遵循Contenteditable text editor and cursor position上的建议我正在使用insertHTML
)
非常感谢!
答案 0 :(得分:1)
关注@ tim-down建议我尝试导航DOM并从IMG标签中删除文本格式。
奖励将获得更优雅的解决方案。
这里的工作示例:http://jsfiddle.net/tjzGg/
function setCaret() {
var el = document.getElementById("editable");
recurseDOM(el);
el.focus();
}
function recurseDOM(el) {
var nIndex = 0;
var elNode = el.childNodes[nIndex];
while (elNode) {
var tag = elNode.tagName;
if (tag) {
if (tag.toUpperCase() == 'IMG') {
var range = document.createRange();
var sel = window.getSelection();
range.selectNode(elNode);
sel.removeAllRanges();
sel.addRange(range);
document.execCommand('removeFormat', false, null);
} else if (elNode.childElementCount) {
recurseDOM(elNode);
}
}
nIndex++;
elNode = el.childNodes[nIndex];
}
}