在文本节点内的网页上创建换行符 - Javascript

Posted

技术标签:

【中文标题】在文本节点内的网页上创建换行符 - Javascript【英文标题】:Create Linebreak on webpage within a textnode - Javascript 【发布时间】:2015-04-13 23:14:56 【问题描述】:

我看到了一些对此问题的回复,但这些建议并未解决我的输出问题。表单接受输入并打印到网页,如下所示:

function init() 
var div = document.createElement("div");
    div.id = "output";

var name = document.getElementById("name").value;
    name.type = "text";
var address = document.getElementById("address").value;
    address.type = "text";

    var city = document.getElementById("city").value;
        city.type = "text";
    var state = document.getElementById("state");
        state.type = "text";
        var index = state.selectedIndex;
        var fullState = state.options[index];

    var zip = document.getElementById("zip").value;
        zip.type = "text";

var email = document.getElementById("email").value;
    email.type = "text";

var areaCode = document.getElementById("areaCode").value;
    areaCode.type = "text";
var prefix = document.getElementById("prefix").value;
    prefix.type = "text";
var suffix = document.getElementById("suffix").value;
    suffix.type = "text";

var gender = document.getElementById("gender").value;

/*

var courses = document.getElementById("courses").value;
    courses.type = "text";

    var aj = document.getElementById("aj").value;
        aj.type = "text";
    var asp = document.getElementById("asp").value;
        asp.type = "text";
    var php = document.getElementById("php").value;
        php.type = "text";
*/

var br = document.createElement('br');



var printName = document.createTextNode("Name: " + name + " ");
var printEmail = document.createTextNode("Email: " + email + " ");
var printPhone = document.createTextNode("Phone: " + areaCode + "-" + prefix + "-" + suffix);
var printAddress = document.createTextNode("Address: " + address + " " + city + " " + fullState.text + " " + zip);
var printGender = document.createTextNode("Gender: " + gender + " ");
//var printCourses = document.createTextNode("Courses Taken:" + courses + " ");



div.appendChild(printName);
div.appendChild(br);
div.appendChild(printEmail);
div.appendChild(br);
div.appendChild(printPhone);
div.appendChild(br);
div.appendChild(printAddress);
div.appendChild(br);
div.appendChild(printGender);
div.appendChild(br);
//div.appendChild(printCourses);
div.appendChild(br);

var output = document.getElementById("output");

if(output) 
    output.parentNode.replaceChild(div, output);
 else 
    document.body.appendChild(div);


尽管创建了换行元素,但网页上的输出仍然只是一个连续的行。还有其他建议吗?

【问题讨论】:

【参考方案1】:

当你这样做时

var br = document.createElement('br');

您有一个对 SINGLE 元素的引用。所以当你这样做时:

div.appendChild(printName);
div.appendChild(br);
div.appendChild(printEmail);
div.appendChild(br);

您是说“添加printName 元素,然后在其后添加此<br> 元素。现在,创建printEmail 元素,然后在其后移动相同的<br> 元素。”

所以最后,你仍然只有一个 <br> 元素,除此之外。

可能涉及最少代码更改的修复是这样的:

function br() 
    return document.createElement('br');


div.appendChild(printName);
div.appendChild(br());

【讨论】:

啊,所以到最后我的换行符在最后一个元素之后,完全没用。把它变成一个可调用的函数是一个很好的解决方法。谢谢!

以上是关于在文本节点内的网页上创建换行符 - Javascript的主要内容,如果未能解决你的问题,请参考以下文章

按钮内的文本换行

以编程方式将 <br>-元素添加到跨度内的文本不会断行

js的DOM节点操作:创建 ,插入,删除,复制,查找节点

javasript 的DOM 节点操作:创建,插入,删除,复制以及查找节点

如何可以让div内的元素不换行?

内联块内的文本选择,中间没有空格