javascript - 为什么断行 (\n) 在我的代码中不起作用?
问题描述
我正在创建电视提供商表和他们的联系人。
您可以在那里看到的一般功能: https ://imgur.com/u5uREJm
表格的构造方式是,每一行都是带有提供程序的按钮。单击此按钮后,将在单击的行下打开下一行,显示联系信息。
ContactRow 包含 2 个单元格。在第一个我放电子邮件,在第二个电话号码。然而,它呈现得并不好,联系人看起来像是被吐出而不是正确格式化。
一般的想法是我想使用\n
或任何其他替代方法<br/>
,以便我可以以“表格”的形式格式化contactRow,如下所示:
EMAIL1@EXAMPLE.COM | 0-000-000-000
EMAIL2@EXAMPLE.COM |
EMAIL3@EXAMPLE.COM | 0-000-000-000
程序以这种方式工作:
- 使用 php 我创建表并从中导入联系人
contacts.txt
- 单击带有提供程序的按钮会调用
specialFunc()
按钮内部的 JavaScript 函数传递提供程序。 specialFunc()
在其中调用addRow()
函数,它们都将在下面的伪代码中进行解释。
文件contacts.txt
是这样创建的:
PROVIDER1;EMAIL1@EXAMPLE.COM EMAIL2@EXAMPLE.COM;0-000-000-000 0-000-00-00
PROVIDER2;EMAIL1@EXAMPLE.COM;0-000-000-000 0-000-00-00;
PROVIDER3;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" + concatsFroxTxt[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"));
}
}
这会在其中对您的字符串进行后处理\n
。显然,如果你能早点做到这一点(当你弄清楚\n
应该在哪里时),那会更好。
推荐阅读
- tkinter - 调用事件函数并使用 .bind 使我的画布矩形在光标滚动后显示为灰色 - Tkinter
- node.js - 如何通过 Dialogflow 中的内联编辑器将 Dialogflow 连接到 Cloud Firestore?
- amazon-s3 - 在我的网站上只允许 S3 文件
- javascript - 我没有得到这个 js 代码的任何输出
- android - 如何在我的 Moto G5s 上安装 lineage os?
- c++ - 在非阻塞文件描述符上等待长时间运行的 ioctl
- python - KeyError:instagram 脚本中的“数据”错误在低数字上没有问题,但在 100-150 以上的数字上没有问题
- excel - to_csv 使 0 消失
- arduino - 尝试在 Energia 上为 MSP430 编译基于 Arduino 的 LoRa 库时出现“错误:SPISettings'没有命名类型”
- mysql - 我如何在 SQL 中合并多个 WHERE (STUCK)