有人可以告诉我如何在不使用jQuery的情况下使用这两个函数吗?
我正在使用一个预编码应用程序,无法使用jQuery,并且我需要使用JS将一个div中的HTML移到另一个div中。
有人可以告诉我如何在不使用jQuery的情况下使用这两个函数吗?
我正在使用一个预编码应用程序,无法使用jQuery,并且我需要使用JS将一个div中的HTML移到另一个div中。
var content = $("#id").html();
使用
var content = document.getElementById("id").innerHTML;
和
$("#id").append(element);
使用
document.getElementById("id").appendChild(element);
.html(new_html)
可以被替换为.innerHTML=new_html
.html()
可以被替换为.innerHTML
.append()
方法有3种模式:
.append(elem)
可以被替换为.appendChild(elem)
.append(new_html)
可以被替换为.innerHTML += new_html
var new_html = '<span class="caps">Moshi</span>';
var new_elem = document.createElement('div');
// .html(new_html)
new_elem.innerHTML = new_html;
// .append(html)
new_elem.innerHTML += ' ' + new_html;
// .append(element)
document.querySelector('body').appendChild(new_elem);
使用innerHTML无法添加<script>
标签。您需要使用appendChild
方法。
如果您的页面是严格xhtml格式,追加非严格xhtml代码将触发脚本错误并破坏代码。这种情况下,您可以使用try
语句包裹它。
jQuery提供了其他几个不太直接的快捷方式,例如prependTo/appendTo
, after/before
,等等。
要将一个 div 中的 HTML 复制到另一个 div 中,只需使用 DOM。
function copyHtml(source, destination) {
var clone = source.ownerDocument === destination.ownerDocument
? source.cloneNode(true)
: destination.ownerDocument.importNode(source, true);
while (clone.firstChild) {
destination.appendChild(clone.firstChild);
}
}
对于大多数应用程序来说,inSameDocument
总是为 true,因此您可以省略当它为 false 时起作用的所有部分。如果您的应用程序具有通过 JavaScript 相互交互的同一域中的多个框架,则可能需要保留它。
如果您想替换 HTML,则可以通过清空目标并将其复制到其中来实现:
function replaceHtml(source, destination) {
while (destination.firstChild) {
destination.removeChild(destination.firstChild);
}
copyHtml(source, destination);
}
clone(true)
克隆源节点吗? :-) - RobG<img>
)可能会导致它们的内容在添加到DOM之前被获取,但是这些节点不应该包含子节点,因此除非DOM很奇怪,否则按照你的方式进行操作不应该存在额外的网络请求的边角情况。 - Mike SamuelcopyHtml
中,使其变得更小了。 - Mike Samueldocument.getElementById('your-element').innerHTML += "your appended text";
这对于向DOM元素追加HTML来说非常有效。
.html()
和.append()
是jQuery函数,因此如果不使用jQuery,您可能需要查看document.getElementById("yourDiv").innerHTML
innerHTML
从一个节点到另一个节点可能会丢失信息。例如,<input>
元素在JS中既有value
属性,又有defaultValue
属性。如果它们不同,那么通过重新解析你将会丢失信息,而通过克隆DOM节点则不会。另一方面,有时候拒绝innerHTML
执行<script>
标签的作用也是非常方便的。 - Mike Samuel代码:
<div id="from">sample text</div>
<div id="to"></div>
<script type="text/javascript">
var fromContent = document.getElementById("from").innerHTML;
document.getElementById("to").innerHTML = fromContent;
</script>
foo('bar').html();
而不是$('bar').html();
。这样会有帮助吗? - trusktr