【发布时间】:2017-05-05 02:21:02
【问题描述】:
我在工作面试中遇到了编码挑战,我想看看是否有任何行善的人可以帮助我找出哪里出错了。我什至无法理解被问到的一般问题,所以我想知道是否有人有同样的感觉。这是整个问题:
可以通过使用数组来表示元素来表示 HTML 的简化版本:
[tagName, child1, child2, ...]
• 标签名称始终是数组中的第一个条目,并且是一个字符串。 • 子元素可以是数组或字符串。 • 如果子项是字符串,则将其视为纯文本,而不是 HTML 标记。 • 如果子元素是数组,则将其视为嵌套元素。 • 不支持属性、cmets 等,仅支持元素和文本。 实现一个 JavaScript 函数,该函数接受一个数组并生成 HTML 字符串。 • 空标签应该是自动关闭的。 • 在完成的输出中合并连续的文本节点。 • 没有库、构建过程或转译器。 例子:
['div'] => '<div/>'
['h1', 'Text'] => '<h1>Text</h1>'
['span', 'More', 'Text'] => '<span>MoreText</span>'
['a', ['b', 'More'], ' Text'] => '<a><b>More</b> Text</a>'
['p', '<b>Text</b>'] => '<p><b>Text</b></p>'
我的回答如下:
<html>
<head>
<title>title here</title>
<meta charset="UTF-8">
<meta name="description" content="">
<meta name="keywords" content="">
<style>
div{
background: yellow;
}
</style>
</head>
<body>
<section>
<h1>I am a <br>header</h1>
<p id="demo"></p>
<div></div>
</section>
<script>
document.getElementById("demo").innerHTML =
"The title of this document is: " + document.title;
</script>
<script>
var wrapper = document.createElement("div");
wrapper.appendChild( document.createTextNode("Part 1 ") );
wrapper.appendChild( document.createTextNode("Part 2 ") );
// At this point, wrapper.childNodes.length === 2
wrapper.childNodes[0].textContent === "Part 1 "
wrapper.childNodes[1].textContent === "Part 2 "
wrapper.normalize();
// Now, wrapper.childNodes.length === 1
wrapper.childNodes[0].textContent === "Part 1 Part 2 "
</script>
</body>
</html>
我确实看到我的文本没有合并;但我认为我遵循了其余的要求。我发现要求有点难以理解。非常感谢任何 cmets。
【问题讨论】:
-
我有点困惑。你开始你的问题是谈论描述页面的数组并从数组生成页面,但我在你的逻辑中没有看到这样的数组。
标签: javascript html arrays dom