Javascript 为什么断线(\n)不';我的代码不工作?
我正在创建电视提供商和联系人表 您可以在此处看到的一般功能: 表是以这样的方式构造的,即每行中都有一个带有提供者的按钮。单击此按钮后,下一行将在clicked one下打开,显示联系人信息 ContactRow包含2个单元格。在第一封信里,我把电子邮件放在第二个电话号码里。然而,它并没有很好地呈现,联系人看起来像是被吐出来的,而不是正确格式化的 一般的想法是,我想使用Javascript 为什么断线(\n)不';我的代码不工作?,javascript,php,css,function,formatting,Javascript,Php,Css,Function,Formatting,我正在创建电视提供商和联系人表 您可以在此处看到的一般功能: 表是以这样的方式构造的,即每行中都有一个带有提供者的按钮。单击此按钮后,下一行将在clicked one下打开,显示联系人信息 ContactRow包含2个单元格。在第一封信里,我把电子邮件放在第二个电话号码里。然而,它并没有很好地呈现,联系人看起来像是被吐出来的,而不是正确格式化的 一般的想法是,我想使用\n或的任何其他替代方法,以便我可以将contactRow格式化为如下所示的“表格”: EMAIL1@EXAMPLE.COM
\n
或
的任何其他替代方法,以便我可以将contactRow格式化为如下所示的“表格”:
EMAIL1@EXAMPLE.COM | 0-000-000-000
EMAIL2@EXAMPLE.COM |
EMAIL3@EXAMPLE.COM| 0-000-000-000
程序的工作方式如下:
contacts.txt
specialFunc()
传递位于按钮内部的提供程序specialFunc()
调用它内部的addRow()
函数,这两个函数都将在下面的伪代码中解释contacts.txt
是这样创建的:
PROVIDER1;EMAIL1@EXAMPLE.COM EMAIL2@EXAMPLE.COM;0-000-000-000 0-000-00-00
提供者2;EMAIL1@EXAMPLE.COM;0-000-000-000 0-000-00-00;
提供者3;EMAIL1@EXAMPLE.COM EMAIL2@EXAMPLE.COM;0-000-000-000
因此,电子邮件和电话号码的数量可能从0到6不等。
JavaScript函数通过读取之前的第一个单词来选择联系人代码>
你能在视频中看到格式非常好的电子邮件的原因是,在.css
文件中,我将EmailCell和PhoneCell设置为包装文本,所以在电子邮件中,第一个适合,第二个不适合,这就是为什么它移到另一行的原因。然而,这不是一个好方法,因为如果有短电子邮件,就有相同的行
我试图通过将contacts.txt中的每个电话号码分开代码>用于测试和重新制作线路:provInfoPhone=contactsFromTxt[2]代码>到
provInfoPhone=contactsFromTxt[2]+“\n”+concatsFromTXT[3]代码>
然而,这没有任何帮助。它既不会以html格式打印为“\n”,也不会断行并移动到下一行
addRow(ProperIndexOfRow{wheretoinsert}){
*code reffering to correct table, to correct position where to insert newRow*
*code deleting previously added row(when someone is zapping over buttons)*
let newCell = newRow.insertCell(0);
let newText = document.createTextNode(provInfoEmail);
newCell.appendChild(newText);
let newCell2 = newRow.insertCell(1);
let newText2 = document.createTextNode(provInfoEmail);
newCell.appendChild(newText2);
}
specialFunc(prov) {
switch(prov):
case "EXAMPLE1":
provInfoEmail = contactsFromTxt[1];
provInfoPhone = contactsFromTxt[2];
break;
case "EXAMPLE2":
provInfoEmail = contactsFromTxt[1];
provInfoPhone = contactsFromTxt[2];
break;
[...]
addRow(properIndex);
}
你能帮我吗?我知道我的问题需要大量的阅读和理解,但我相信我缺乏解决这些问题的一些基本方法。正如我想你知道的,HTML中的所有空白(包括制表符和换行符)都呈现为一个普通的空间。要在不使用CSS属性的情况下获得换行符,需要将它们分隔为不同的文本节点,中间有一个br
元素。大致:
let newCell2 = newRow.insertCell(1);
let first = true;
for (const entry of provInfoEmail.split("\n")) {
if (first) {
first = false;
} else {
newCell.appendChild(document.createElement("br"));
}
}
该post处理包含\n
的字符串。显然,如果你能早点做(当你想知道\n
应该在哪里时),那会更好。首先谢谢你的回复。我知道制表符和空间被渲染为单个普通空间,但是我忘记了换行符被渲染为相同的方式。我相信我无法正确理解提供的代码。据我所知,它应该放在AddRow
的newCell2
之后,但在let newText2
之前,我这样做了。不幸的是,代码不起作用。我是否应该以某种方式更改(provInfoEmail.split(“\n”)的常量条目)
?我相信这是我唯一不明白的事情。另外,我应该对电话号码执行相同的for循环,不是吗?最原始的方法永远是最后一条生命线,就是修改contacts.txt
,以便每个电话号码都添加“`”(硬空间,在numpad上保留alt+0160),但程序员不应该这样编写程序(@kaszankabanka-上面的代码将替换(provInfoEmail.split(“\n”)的const entry)的addRow
的最后三行。
通过调用split
来拆分每个\n
出现的字符串,从而循环遍历数组。entry
将依次为数组中的每个字符串。