Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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中插入一大块HTML?_Javascript_Html - Fatal编程技术网

如何在JavaScript中插入一大块HTML?

如何在JavaScript中插入一大块HTML?,javascript,html,Javascript,Html,如果我有一块带有许多标记的HTML,如何将其插入JavaScript var div = document.createElement('div'); div.setAttribute('class', 'post block bc2'); div.innerHTML = 'HERE TOO MUCH HTML that is much more than one line of code'; document.getElementById('posts').appendChild(div);

如果我有一块带有许多标记的HTML,如何将其插入JavaScript

var div = document.createElement('div');
div.setAttribute('class', 'post block bc2');
div.innerHTML = 'HERE TOO MUCH HTML that is much more than one line of code';
document.getElementById('posts').appendChild(div);

如何正确操作?

此答案不使用Internet Explorer不支持的反勾号/模板文字/模板字符串(
`


使用HTML+JavaScript: 您可以将HTML块保存在HTML代码中的一个不可见容器(如
)中,然后在JS中运行时使用它的
innerHTML

例如:

//创建要加载到的临时文件
var div=document.createElement('div');
div.setAttribute('class','someClass');
div.innerHTML=document.getElementById('blockOfStuff').innerHTML;
//您甚至可以选择做一点字符串模板
div.innerHTML=div.innerHTML
.替换(/{VENDOR}/g,'ACME Inc.)
.替换(/{PRODUCT}/g,“最佳TNT”)
.替换(/{PRICE}/g,$1.49');
//将代码写入HTML容器
document.getElementById('targetElement').appendChild(div)
.red{
颜色:红色
}

这里有一些随机文本。
包括HTML标记
还有引语,或者像一个人说的,“这些都是引语,但是
“这些”也是引号。”

供应商:{Vendor}
产品:{Product}
价格:{Price}
将每行代码添加到变量中,然后将变量写入内部HTML。见下文:

var div = document.createElement('div');
div.setAttribute('class', 'post block bc2');
var str = "First Line";
str += "Second Line";
str += "So on, all of your lines";
div.innerHTML = str;
document.getElementById('posts').appendChild(div);

如果我理解正确的话,你是在寻找一个多行表示,为了可读性?在其他语言中,您需要类似于here字符串的内容。Javascript可以做到这一点:

var x =
    "<div> \
    <span> \
    <p> \
    some text \
    </p> \
    </div>";
var x=
" \
\
\
一些文本\

\ ";
尽管这个问题的性质不精确,但下面是我的解释性答案

var html = [
    '<div> A line</div>',
    '<div> Add more lines</div>',
    '<div> To the array as you need.</div>'
].join('');

var div = document.createElement('div');
    div.setAttribute('class', 'post block bc2');
    div.innerHTML = html;
    document.getElementById('posts').appendChild(div);
var html=[
“一行”,
“添加更多行”,
'根据需要添加到阵列中。'
].加入(“”);
var div=document.createElement('div');
div.setAttribute('class','post block bc2');
div.innerHTML=html;
document.getElementById('posts').appendChild(div);

如果您在同一个域上使用,那么您可以创建一个单独的HTML文件,然后使用@Stano:


模板文字可以解决您的问题,因为它允许编写多行字符串和字符串插值功能。可以在字符串中使用变量或表达式(如下所示)。以读者友好的方式插入批量html很容易

我已经修改了上述示例,请参见下文。我不确定与浏览器兼容的
模板文本有多少。请在这里读一下

var a=1,b=2;
var div=document.createElement('div');
div.setAttribute('class','post block bc2');
div.innerHTML=`
${a}
+
${b}
=
${a+b}
`;
document.getElementById('posts').appendChild(div)
.parent{
背景颜色:蓝色;
显示器:flex;
证明内容:中心;
}
邮政组{
颜色:白色;
字号:2.5em;
填充:20px;
}

插入html块的最简单方法是使用模板字符串(backticks)。它还允许您通过${…}插入动态内容:

document.getElementById("log-menu").innerHTML = `
            <a href="#"> 
               ${data.user.email}
            </a>
            <div class="dropdown-menu p-3 dropdown-menu-right">
                <div class="form-group">
                    <label for="email1">Logged in as:</label>
                    <p>${data.user.email}</p>
                </div>
                <button onClick="getLogout()" ">Sign out</button>
            </div>
    `
document.getElementById(“日志菜单”).innerHTML=`
以以下身份登录:
${data.user.email}


到目前为止,最简单的方法是使用insertAdjacentHTML()方法。

只要确保像包装器一样将大型代码包装到单个DIV中,那么不管它有多长

HTML:


JS:

const arr=['1','2','3'];
let mapped=arr.map(值=>{
返回`

${value} 就是这个 ` }); document.querySelector(“#test”).innerHTML=mapped.join(“”);

恐怕我不明白这个问题。什么是“块html”?也许您可以通过将问题代码添加到问题中来表示问题代码。您是在问如何将HTML包装成几行吗?您的意思是要插入的HTML字符串是否非常大?您所做的似乎很好?有没有问题,或者说有什么东西不能用这种方法工作,以及“大html”到底有多少字节?这个问题很有道理,而且是个很好的问题。为什么是否决票和结束票?我喜欢这样。这是一个伪模板的事情。我能把变量放在模板中吗?我会投票赞成这是一个适当的憎恶,而不是大多数开发者会考虑做的事情,即使它工作。好答案!!!!网上最好的答案!谢谢在Chrome63.0.3239.59(官方版本)beta版(64位)中,模板文字对我来说很有用。Perl已经拥有这种类型的特性很多年了,所以我有点熟悉,尽管我不知道JavaScript中的技术术语。我正在将脚本标记中的css样式注入到动态构建的页面中。这是最好的答案。@klewis不相信。如果您尝试此操作,Visual Studio会出现语法错误,即使浏览器处理得很好。@gmfrs我也经历了与您所说的相同的事情,但随后被告知原因可能是编译代码时缺少ES6支持。有了实现,一切都好。请注意,模板文本在任何版本的Internet Explorer(甚至是11版)中都不受支持,但在MS Edge中受支持。Opera Mini、IE Mobile和Blackberry浏览器也不支持它们。如果您需要支持这些浏览器,您可能应该使用上面Danny Beckett描述的标记方法。伟大而简单的解决方案。答案重复。两年后,它没有提供任何新的东西。最初的答案有更好的示例,更具描述性,并通过其真实名称调用backtick字符串:模板文本。
<div id='test'></div>
const arr = ['one', 'two', 'three'];

let mapped = arr.map(value=> {
  return `
    <div>
    <hr />
    <h1>${value}</h1>
    <h3>this is it</h3>
    </div>
  `
});

document.querySelector('#test').innerHTML = mapped.join('');