GVKun编程网logo

createElement优于innerHTML的优势?(innerhtml和createelement)

22

如果您对createElement优于innerHTML的优势?和innerhtml和createelement感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解createElement优于in

如果您对createElement优于innerHTML的优势?innerhtml和createelement感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解createElement优于innerHTML的优势?的各种细节,并对innerhtml和createelement进行深入的分析,此外还有关于appendChild append innerHTML createElement createTextNode分析、document.getElementById(“ main”)innerHTML无法显示或正常工作、document.write和innerHTML的区别、getElementById().innerHTML与getElementById().value的区别的实用技巧。

本文目录一览:

createElement优于innerHTML的优势?(innerhtml和createelement)

createElement优于innerHTML的优势?(innerhtml和createelement)

在实践中,相比于innerHTML,使用createElement有什么优势?我之所以问是因为,我坚信使用innerHTML在性能和代码可读性/可维护性方面会更加有效,但是我的团队成员已经决定使用createElement作为编码方法。我只是想了解createElement如何更有效。

答案1

小编典典

除了安全之外,使用其他方法还具有一些优点,createElement而不是修改innerHTML(而不是仅仅丢弃已有的内容并替换它),例如Pekka已经提到的:

追加元素时保留对DOM元素的现有引用

当您追加(或以其他方式修改)时innerHTML,必须重新解析和重新创建该元素内的所有DOM节点。如果保存了对节点的任何引用,则它们实际上将是无用的,因为它们不再显示出来了。

保留附加到任何DOM元素的事件处理程序

这实际上只是最后一个的特例(尽管很常见)。设置innerHTML不会自动将事件处理程序重新附加到它创建的新元素上,因此您必须自己跟踪它们并手动添加它们。在某些情况下,事件委托可以消除此问题。

在某些情况下可能更简单/更快

如果您要进行大量添加操作,则绝对不希望继续进行重置,innerHTML因为尽管对于简单的更改来说速度更快,但是反复重新解析和创建元素会更慢。解决该问题的方法是在字符串中构建HTML,并innerHTML在完成后设置一次。根据情况的不同,字符串操作可能比仅创建元素和附加元素要慢。

此外,字符串操作代码可能更复杂(特别是如果您希望它是安全的)。

这是我有时使用的功能,它使使用起来更加方便createElement

function isArray(a) {    return Object.prototype.toString.call(a) === "[object Array]";}function make(desc) {    if (!isArray(desc)) {        return make.call(this, Array.prototype.slice.call(arguments));    }    var name = desc[0];    var attributes = desc[1];    var el = document.createElement(name);    var start = 1;    if (typeof attributes === "object" && attributes !== null && !isArray(attributes)) {        for (var attr in attributes) {            el[attr] = attributes[attr];        }        start = 2;    }    for (var i = start; i < desc.length; i++) {        if (isArray(desc[i])) {            el.appendChild(make(desc[i]));        }        else {            el.appendChild(document.createTextNode(desc[i]));        }    }    return el;}

如果您这样称呼它:

make(["p", "Here is a ", ["a", { href:"http://www.google.com/" }, "link"], "."]);

您将获得与此HTML等效的代码:

<p>Here is a <a href="http://www.google.com/">link</a>.</p>

appendChild append innerHTML createElement createTextNode分析

appendChild append innerHTML createElement createTextNode分析

1.innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML。(属于dom对象),也可以插入Html对象 例子: Firstname Lastname 输出 FirstnameLastname 2.append函数(JQuery)-一般函数都是JQuery中的 有下面一段html代码:

Greetings

Hello
Goodbye
然后通过一行代码可以得到下面的代码: $(''.inner'').append(''

Test

'');//在OSC_h2_2">

Greetings

Hello

Test

Goodbye

Test

还可以把一个元素添加到另一个元素下面: $(''.container'').append($(''h2'')); //把h2添加到container">
Hello
Goodbye

Greetings

3.createTextNode为创建文本节点,createElement为创建一个元素标签,appendChild() 方法可向节点的子节点列表的末尾添加新的子节点。通常这3者都会在一起使用,在body中添加新的元素 例子:var element = document.createElement("div"); element.className = "message"; var textNode = document.createTextNode("Hello world!"); element.appendChild(textNode); var anotherTextNode = document.createTextNode("Yippee!"); element.appendChild(anotherTextNode); document.body.appendChild(element); 如果两个文本节点是相邻的同胞节点,那么这两个节点中的文本就会连起来显示,中间不会有空格。 4.appendHtml和innerHTML用法差不多,区别如下: (1)在执行速度的比较上,使用appendChild比innerHTML要快,特别是内容包括html标记时,appendChild明显要快于innerHTML,这可能是因为innerHTML在铺到页面之前还要对内容进行解析才能铺到页面上,当包含html标记过多时,innerHTML速度会明显变慢。 (2)如果appendChild的参数是页面存在的一个元素,则执行后原来的元素会被移除,如document.getElement("a").appendChild(document.getElementByIdx("b")),执行后,b元素会先被移除,然后再添加到a中。 (3)通过appendChild添加到的是dom对象,返回的也是dom对象,可以通过dom对象访问获取元素的各种属性,而innerHTML则是纯字符串,不能获取内部元素的属性。这也是执行速度差异的主要原因 (4)、在使用上innerHTML比appendChild要方便,特别是创建的节点属性多,同时还包含文本的时候。 因此在使用时如果数据量较大且对性能有所要求时,还是应该使用appendChild。

document.getElementById(“ main”)innerHTML无法显示或正常工作

document.getElementById(“ main”)innerHTML无法显示或正常工作

浏览器端JS在与其关联的网页的上下文中运行。

该脚本位于 main.html 中。

带有2030 VARCHAR(255),2031 VARCHAR(255),2032 VARCHAR(255),2033 VARCHAR(255),2034 VARCHAR(255),2035 VARCHAR(255),2036 VARCHAR(255),2037 VARCHAR(255) 的元素在 test.html 中。

那是一个个不同的文档,并且运行在 main.html 中的JS无法访问(至少除非使用id="test"之类的东西,否则就不能访问)仍然是另一个文档,您必须通过iframe的API访问那个文档。

,

我认为您没有将 script.js 添加到 main.html (但已将其添加到 test.html

仅当您将js文件添加到 main.html 文件中时,

script.js 才能与id = “ main” 一起使用。>

检查演示:我无权访问 python-eel ,因此不能在代码段中使用 eel.dummy(u),相反,我只是更改了另一个 p标签的值。

GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0];
device.setFullScreenWindow(frame);
function dummy() {
        u = document.getElementById("main").innerHTML
        document.getElementById("test").innerHTML = u
}

document.write和innerHTML的区别

document.write和innerHTML的区别

document.write只能重绘整个页面,innerHTML可以重绘页面的一部分。

1. ducument.write使用举例
html文档:

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题</title>
<script type="text/javascript" src="js.js"></script>
</head>
<body>
<p>原有内容</p>
<div id="testdiv">原有内容</div>
</body>
</html>

js文档:

window.onload = function() {
    document.write("现有内容");
}

执行结果显示:document.write会将页面上的所有内容清除包括标题。

2. innerHTML使用举例
html文档:

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题</title>
<script type="text/javascript" src="js.js"></script>
</head>
<body>
<p>原有内容</p>
<div id="testdiv">原有内容</div>
</body>
</html>

js文档:

window.onload = function() {
var testdiv=document.getElementById(''testdiv'');
testdiv.innerHTML = "<p>I love <em>JavaScript</em>!</p>";
}

执行结果显示:innerHTML只会重写所属元素的内容,即<div>元素中的内容。

getElementById().innerHTML与getElementById().value的区别

getElementById().innerHTML与getElementById().value的区别

因为总有新手朋友问这个问题,所以小编特整理一下方法需要的朋友。

简单来说:表单用value,插入字符用innerHTML

比如<input type="text" value="" id="jb51" />

有value属性的标签才能使用getElementById("jb51").value
像<div id="jb51">12345</div>

这种没有value属性的标签就用getElementById("jb51").innerHTML

你使用document.getElementById()可以取到页面上一个有id的元素
然后访问这个元素的属性,比如value

当一个元素有value属性的时候,其value才会有值
例1
<input type="text" id="txt1" value="hello"/>
这样一个元素,当你使用document.getElementById("txt1").value时,可以得到其value值,即"hello"这个字符串。

如果一个元素没有value值,那么使用document.getElementById().value时是取不到。这是理所当然的,没有的东西怎么访问?
比如一个div标记,就不一定有value值。

innerHTML
这个是指元素中的内容
例2

一个元素有起始标记和结束标记如

<label id="lb1">this is a label</label>

当你使用document.getElementById("lb1").innerHTML可以取到<label>与</label>之间的内容,即“this is a label”。

今天关于createElement优于innerHTML的优势?innerhtml和createelement的介绍到此结束,谢谢您的阅读,有关appendChild append innerHTML createElement createTextNode分析、document.getElementById(“ main”)innerHTML无法显示或正常工作、document.write和innerHTML的区别、getElementById().innerHTML与getElementById().value的区别等更多相关知识的信息可以在本站进行查询。

本文标签:

上一篇“ innerHTML + =…”与“ appendChild(txtNode)”(appendchild和innerhtml)

下一篇如何在不使用ToString()的情况下将Int转换为C#中的字符串?(string转int不用integer)