我正在为学校工作。我的一切都按照应有的方式运作。唯一错误的是如何格式化输出。我不明白为什么我收到格式化的输出。我正在使用javascript,我正在创建节点并将它们作为子元素附加。我的主要目标是将每条信息格式化并放置在自己的行中。这是我的javascript函数。
function createUserid()
{
var firstString = window.prompt ( "Enter first name", "" );
//documentwrite
var lower = firstString.toLowerCase();
// firstString.substring(0,4)
// firstString.concat
var lastString = window.prompt ( "Enter last name", "" );
var lowlast = lastString.toLowerCase();
var socialString = window.prompt ( "Enter social security number without dashes", "" );
var ln = lowlast.substring(0,4); //first 4 of last name
var ls = socialString.substring(5,9); //last 4 of social
var fs = socialString.substring(0,5); //first 5 of social
var fn = lower.substring(0,4); //first 4 of first name
//var user = docoument.write("<p>" + "Username: " + lastString +
//var pass = <p>"Password: " +
//var myDiv = document.getElementById('here');
//myDiv.innerHTML = ____ ;
var e = document.getElementById('info');
var o = document.getElementById('here');
//creating 2 elements: p, br
var newPara = document.createElement('p');
var tBR = document.createElement('br');
//prepare text nodes
var first = document.createTextNode('First name: ' + firstString);
var last = document.createTextNode('Last name: ' + lastString);
var social = document.createTextNode('Social Security #: ' + socialString);
var userN = document.createTextNode('Username: ' + ln + ls);
var passW = document.createTextNode('Password: ' + fs + fn);
//put together paragraph
newPara.appendChild(first);
newPara.appendChild(tBR);
newPara.appendChild(last);
newPara.appendChild(tBR);
newPara.appendChild(social);
newPara.appendChild(tBR);
newPara.appendChild(userN);
newPara.appendChild(tBR);
newPara.appendChild(passW);
//insert into div id of info
document.getElementById('info').appendChild(newPara);
o.style.display = 'none';
e.style.display = 'block';
}
这是我收到的输出
这是输出的外观。
答案 0 :(得分:7)
您要反复追加相同的节点。
newPara.appendChild(first);
newPara.appendChild(tBR);
newPara.appendChild(last);
newPara.appendChild(tBR); <--- this node gets moved, since you append it again.
newPara.appendChild(social);
newPara.appendChild(tBR);
newPara.appendChild(userN);
newPara.appendChild(tBR); <--- this is where tBR will be at last.
newPara.appendChild(passW);
而是这样做:
var first = document.createTextNode('First name: ' + firstString + '<br/>');
或者这个:
newPara.appendChild(first);
newPara.appendChild(document.createElement('br'));
newPara.appendChild(last);
newPara.appendChild(document.createElement('br'));
.................................
此处的文档: https://developer.mozilla.org/en-US/docs/DOM/Node.appendChild
将节点添加到指定父级子级列表的末尾 节点。如果该节点已存在,则将其从当前父节点中删除 节点,然后添加到新的父节点。
答案 1 :(得分:1)
如果已插入child
,则element.appendChild(child)
会将其从插入新位置之前的位置删除。
使用node.cloneNode(true)
复制孩子,或者只是反复使用document.createElement('br')
(可能在循环中以避免重复)。
答案 2 :(得分:0)
试试这个:
var first = document.createTextNode('First name: ' + firstString + '<br>');
var last = document.createTextNode('Last name: ' + lastString + '<br>');
var social = document.createTextNode('Social Security #: ' + socialString + '<br>');
var userN = document.createTextNode('Username: ' + ln + ls + '<br>');
var passW = document.createTextNode('Password: ' + fs + fn + '<br>');