Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何同时执行createElement、appendChild和className?_Javascript_Html - Fatal编程技术网

Javascript 如何同时执行createElement、appendChild和className?

Javascript 如何同时执行createElement、appendChild和className?,javascript,html,Javascript,Html,使用vanilla JS时,以下是我创建元素并在页面上呈现的典型方式: var span = document.createElement('span'); span.className = 'someClass'; span.innerHTML = 'Lorem ipsum'; document.body.appendChild(span); 使用jQuery,您可以执行以下操作 $('body').append('<span class="someClass">

使用vanilla JS时,以下是我创建元素并在页面上呈现的典型方式:

var span = document.createElement('span');
    span.className = 'someClass';
    span.innerHTML = 'Lorem ipsum';

document.body.appendChild(span);
使用jQuery,您可以执行以下操作

$('body').append('<span class="someClass">Lorem ipsum</span>')

纯JS有没有更快捷的版本?

我经常使用的一种方法是:

var el = '<div class="class-name">content</div>';
document.body.innerHTML = el;
EDIT发现,它谈论同一问题的篇幅更长,答案和我的相似


尽管我会忽略这两个方面,因为@Jonathon的答案看起来很棒。

我最后经常使用的方法是:

var el = '<div class="class-name">content</div>';
document.body.innerHTML = el;
EDIT发现,它谈论同一问题的篇幅更长,答案和我的相似

尽管我会忽略这两个问题,因为@Jonathon的答案看起来很棒。

当然:

document.body.insertAdjacentHTML('beforeend', '<span class="someClass">Lorem ipsum</span>');
当然可以:


这可能是你想要的,但不是最好的:

document.body.appendChild((((t = document.createElement("span")).className="someClass"),t)).innerHTML = "Lorem ipsum";
它将一个新元素分配给t,设置类名,然后将t传递给appendChild方法,最后设置innerHTML

以下措施也可能奏效:

document.body.appendChild(t = document.createElement("span"),t.innerHTML="yea",t.style.backgroundColor="#F00",t)

这可能是你想要的,但不是最好的:

document.body.appendChild((((t = document.createElement("span")).className="someClass"),t)).innerHTML = "Lorem ipsum";
它将一个新元素分配给t,设置类名,然后将t传递给appendChild方法,最后设置innerHTML

以下措施也可能奏效:

document.body.appendChild(t = document.createElement("span"),t.innerHTML="yea",t.style.backgroundColor="#F00",t)


不是真的,没有。显然有办法做到这一点,但在幕后,简单的jQuery行有大量代码支持它。@TravisJ:你可以用少量代码行创建一个函数,让你创建的复杂数据结构比jQuery允许的要干净得多。@squint-Yup,您完全可以使用一些自定义函数创建此功能。但是,它不是内置的。没有一种本地方法可以一次完成这一切,这将比所示的一行程序更为简捷。@skint-我认为大量代码支持的意义在于,您需要承担大量额外的工作。jQuery提供了很多功能,如果不是所有功能都有用,那么这可能是对包含的浪费。对于这个特定的示例,与使用jQuery相比,自己编写它的幕后代码更少。@TravisJ。只是想复制这个特别的方法,因为它的项目范围非常小,优化也非常关键,不是真的,没有。显然有办法做到这一点,但是在幕后,简单的jQuery行有大量的代码支持。@TravisJ:你可以用少量的代码行来创建一个函数,它可以让你创建复杂的数据结构,比jQuery允许的要干净得多。@斜视-是的,你可以用一些自定义函数来创建这个功能。但是,它不是内置的。没有一种本地方法可以一次完成这一切,这将比所示的一行程序更为简捷。@skint-我认为大量代码支持的意义在于,您需要承担大量额外的工作。jQuery提供了很多功能,如果不是所有功能都有用,那么这可能是对包含的浪费。对于这个特定的示例,与使用jQuery相比,自己编写它的幕后代码更少。@TravisJ。只是想复制这个特别的方法,因为它的项目范围非常小,优化是关键!请不要告诉人们使用.innerHTML+=。。。。真的很糟糕!这是一个糟糕的建议!您正在销毁整个DOM并重建它,更不用说销毁处理程序和其他数据。@眯着眼睛看,您是否有更好的主意如何执行OP想要的操作?@Barmar:.insertAdjacentHTML如果必须使用HTML,请使用blech或只制作一个以字符串作为标记名、以对象作为道具的函数。这几乎不值得回答。制作一个函数可以解决任何关于减少重复代码的问题。+1因为你的正确答案要好得多。我认为旧的Firefox会像FF8一样失败,但几乎没有人使用它。不!请不要告诉人们使用.innerHTML+=。。。。真的很糟糕!这是一个糟糕的建议!您正在销毁整个DOM并重建它,更不用说销毁处理程序和其他数据。@眯着眼睛看,您是否有更好的主意如何执行OP想要的操作?@Barmar:.insertAdjacentHTML如果必须使用HTML,请使用blech或只制作一个以字符串作为标记名、以对象作为道具的函数。这几乎不值得回答。制作一个函数可以解决任何关于减少重复代码的问题。+1因为你的正确答案要好得多。我认为旧的Firefox会像FF8一样失败,但几乎没有人使用它。第一种方法实际上对我来说非常适合,就像你说的,当我瞄准一个容器时。原型方法看起来也很整洁!您正在重新创建一个已经存在的方法,除非您的方法在某些浏览器中失败。另外,当有多个子节点时,for循环在所有浏览器中都会失败。第一种方法实际上非常适合我,就像你所说的那样,针对一个容器。原型方法看起来也很整洁!您正在重新创建一个已经存在的方法,除非您的方法在某些浏览器中失败。此外,f 当有多个子节点时,or循环将在所有浏览器中失败。