为什么我的一行等同于将段落附加到节点的函数不给我相同的结果?
Why is my one-line equivalent to a function that appends a paragraph to a node not giving me the same results?
我一直在关注 Scala.js 上的 basic tutorial。为了将 <p>
标记附加到我的 HTML 页面的主体,本教程定义了一个函数 appendPar,它将包含文本的段落附加到另一个节点。
def appendPar(targetNode: dom.Node, text: String): Unit = {
val parNode = document.createElement("p")
val textNode = document.createTextNode(text)
parNode.appendChild(textNode)
targetNode.appendChild(parNode)
}
此函数在 TutorialApp 的主函数内部调用,以将 <p>Hello world</p>
附加到文档正文。我试过的时候效果很好。
然而,当我尝试在 main 中用一行代码替换上面的代码时,Hello world
被附加到正文中,但没有封装在 <p>...</p>
.
中
document.body appendChild (document.createElement("p") appendChild
document.createTextNode("Hello world"))
据我所知,我的一行相当于 appendPar(document.body, "Hello world")
。
我真的不推荐这种单行风格——它简洁,但也令人困惑(混合功能和副作用风格),这就是你的错误的来源。
最终,您的内部块将返回新创建的 TextNode,因此这就是 document.body appendChild
的参数。 TextNode 最初 是 p
的子节点这一事实无关紧要——然后它在 document.body
.
下重新设置父级
换句话说,事件的顺序是:
- 创建
p
元素
- 创建文本节点
- 将文本节点附加到
p
- 将文本节点附加到
document.body
最后一步改变了去向...
我一直在关注 Scala.js 上的 basic tutorial。为了将 <p>
标记附加到我的 HTML 页面的主体,本教程定义了一个函数 appendPar,它将包含文本的段落附加到另一个节点。
def appendPar(targetNode: dom.Node, text: String): Unit = {
val parNode = document.createElement("p")
val textNode = document.createTextNode(text)
parNode.appendChild(textNode)
targetNode.appendChild(parNode)
}
此函数在 TutorialApp 的主函数内部调用,以将 <p>Hello world</p>
附加到文档正文。我试过的时候效果很好。
然而,当我尝试在 main 中用一行代码替换上面的代码时,Hello world
被附加到正文中,但没有封装在 <p>...</p>
.
document.body appendChild (document.createElement("p") appendChild
document.createTextNode("Hello world"))
据我所知,我的一行相当于 appendPar(document.body, "Hello world")
。
我真的不推荐这种单行风格——它简洁,但也令人困惑(混合功能和副作用风格),这就是你的错误的来源。
最终,您的内部块将返回新创建的 TextNode,因此这就是 document.body appendChild
的参数。 TextNode 最初 是 p
的子节点这一事实无关紧要——然后它在 document.body
.
换句话说,事件的顺序是:
- 创建
p
元素 - 创建文本节点
- 将文本节点附加到
p
- 将文本节点附加到
document.body
最后一步改变了去向...