如何更改DIV中的文本内容(使用DOM)以添加SPAN元素
How to change text content in DIV (with DOM) to add SPANs elements instead?
我对如何使用DOM更改div的文本内容感到困惑。当事件被触发时,我看到新的文本替换了旧的,但它在一个新的div中。我想把它保留在"transcriptText"中以保留所有属性`我该怎么做?
这是我的旧div,里面有文本:
var transcriptText = document.getElementById("transcriptText");
这些是我的新文本SPAN
元素
var newTranscript = document.createElement("div");
这就是我处理事件的方式
function EventHandler() {
transcriptText.parentNode.replaceChild(newTranscript, transcriptText);
}
以下是关于其当前工作方式的JSFiddle:http://jsfiddle.net/b94DG/
您现在要做的是创建一个新的div
,newTranscript
,它是通过在旧文本的基础上添加一组跨度来创建的。然后在事件处理程序中,用新的处理程序替换旧的处理程序。相反,您仍然可以从旧的文本中复制文本,但随后将其清除并将子项附加到旧的div
上,将第36行替换为:
transcriptText.appendChild(newSpan);
要清除旧元素,只需将innerHTML
设置为""
即可,或者如果需要,可以使用removeChild
删除所有子元素,如中所述https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild
编辑:
我修改了你的小提琴以反映这一点:
http://jsfiddle.net/b94DG/1/
您可以更改transcriptText
的innerHTML
,而不是创建新的div
。
var transcriptText = document.getElementById("transcriptText");
var divideTranscript = document.getElementById("divideTranscript");
divideTranscript.onclick = function() {
var sArr = transcriptText.innerHTML.split(" ");
var newInnerHTML = "";
for (var i = 0; i < sArr.length; i++) {
var item = sArr[i];
var newText = "<span class='highlight' id='word" + i + "'>" + item + " </span>";
newInnerHTML += newText;
}
transcriptText.innerHTML = newInnerHTML;
var mouseOverFunction = function () {
this.style.backgroundColor = 'yellow';
};
var mouseOutFunction = function () {
this.style.backgroundColor = '';
};
var highlight = document.getElementsByClassName("highlight");
for (i = 0; i < highlight.length; i++) {
highlight[i].onmouseover = mouseOverFunction;
highlight[i].onmouseout = mouseOutFunction;
}
};
小提琴在这儿:http://jsfiddle.net/khnGN/
相关文章:
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何使用ViewCompiler手动编译DOM的一部分
- 使用append时复制内容的DOM
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 在编译阶段后创建新的DOM树,或者继续使用原始修改的DOM
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 如何将数据附加到DOM元素以供jQuery使用
- Ionic:AngularJS变量未使用$scope更新DOM
- 转换<a>使用jQuery将文本字符串转换为dom元素
- React.js如何使用虚拟DOM加速渲染
- 是否可以在尚未附加到DOM的元素中创建一个sparkline(使用jquery.sparkline插件)
- 如何使用jQuery从DOM中删除所有单选按钮元素
- 有没有一种方法可以使用任何浏览器扩展整个dom树'的开发工具
- HTML DOM 使用 AngularJS ng-if 函数
- SVG DOM 使用变量来定义对象属性
- 我怎么能得到一个HTML标签的内部HTML值,是在一个字符串(不是DOM)使用jQuery或原型
- 滑动旋转木马不操纵DOM使用jQuery
- 我可以修改外部URL的HTML DOM使用窗口打开