我想在段落之前添加新的输入文本。但它的工作方式是在文字之后添加
这段代码有什么问题?
我将document.getElementById("p1").insertBefore(node);
用于此目的,但没有成功。为什么会这样?
代码:
<html>
<head>
<title>Adding text to a page</title>
<script>
function addText() {
var sentence=document.form1.sentence.value;
var node=document.createTextNode(sentence + " ");
document.getElementById("p1").insertBefore(node);
}
</script>
</head>
<body>
<h1>Create Your Own Content</h1>
<p id="p1">Using the W3C DOM, you can dynamically
add sentences to this paragraph. Type a sentence
and click the Add button.</p>
<form name="form1">
<input type="text" name="sentence" size="65">
<input type="button" value="Add" onClick="addText();">
</form>
</body>
</html>
问题:
答案 0 :(得分:1)
需要在父节点(要插入的地方)上调用insertBefore
method,就像appendChild
一样:
var node=document.createTextNode(sentence + " ");
var p1 = document.getElementById("p1");
p1.parentNode.insertBefore(node, p1);
如果你想将添加到段而不是之前(直到<body>
),你可以使用:
p1.appendChild(node); // insert at the end
// or
p1.insertBefore(node, p1.firstChild); // insert at the beginning
答案 1 :(得分:0)
你可以
像这样:
var addText = function() {
var sentence = document.form1.sentence.value;
var node = document.createTextNode(sentence + " ");
var el = document.getElementById("p1");
var original = el.innerHTML;
var newPara = sentence + ". " + original;
el.innerHTML = "";
el.innerHTML = newPara;
}
请注意,这有很多步骤,但是,嘿,百万种方法给猫皮肤。
当然,您可以随时将所有代码缩短到此处:
var addText = function() {
document.getElementById("p1").innerHTML = document.form1.sentence.value + ". " + document.getElementById("p1").innerHTML;
}