javascript - 我能以某种方式阻止我的代码中的返回在表单元素之间添加间距吗?

标签 javascript html webforms

<分区>

Possible Duplicate:
Ignore whitespace in HTML

我正在创建一个荷兰菜谱网站。该问题是通过 Javascript 添加新表单字段时发生的视觉错误。

问题出在哪里

为了描述所有需要的成分,我允许用户在现有的表格字段中添加更多的成分表单字段,这些字段是预先由 HTML 定义的。您可以通过按下“添加其他成分”按钮来添加这些新字段。名为 addIngredient() 的 javascript 函数称为 onclick(为清楚起见,它被 chop 了,可以找到完整代码 here ):

function addIngredient() {
  ingredientCount++;

  //define the elements that should be created
  var Group = document.createElement("span");
  var Quantity = document.createElement("input");
  var Unit = document.createElement("input");
  var Type = document.createElement("input");
  var lineBreak = document.createElement("br");

  //set the attributes for each element
  Group.setAttribute("id", "ingredient_" + ingredientCount);
  Quantity.setAttribute("type", "text");
  Unit.setAttribute("type", "text");
  Type.setAttribute("type", "text");

  //add the ingredient group span and linebreak to the ingredients div
  var ingredientList = document.getElementById("ingredienten");
  ingredientList.appendChild(Group);
  ingredientList.appendChild(lineBreak);

  //add the ingredient form elements to the ingredient group span
  var addElements = document.getElementById("ingredient_" + ingredientCount);
  addElements.appendChild(Quantity);
  addElements.appendChild(Unit);
  addElements.appendChild(Type);
}

发生了什么

通过 JavaScript 添加的输入元素之间的间距似乎与之前通过 HTML 创建的元素之间的间距不同。这是显示视觉错误的屏幕截图:

spacing discrepancy

当我从定义预先创建的输入元素的 HTML 中删除返回值时,多余的间距就会消失。

有返回:

<span>
  <input>
  <input>
  <input>
</span><br>

没有返回:

<span>
  <input><input><input>
</span><br>

这让我得出结论,用 HTML 创建的元素实际上会受到我编写代码的方式的间距或位置的影响。当然,使用 Javascript 创建的表单元素生成时没有任何换行符,因此不存在这些多余的空格。

我的问题

坦率地说,我有点震惊,因为在我的 HTML 中按回车 显然会在网页上输出一些间距。我觉得代码格式化会导致在页面上添加内容是荒谬的。我不想删除代码中的返回值以防止它发生。

除了从我的代码中删除返回值以确保我的表单元素之间的那些空格不显示之外,还有其他方法吗?

最佳答案

在 HTML 元素中,空格被规范化为单个空格。如果您有一些文本、七个空格字符和更多文本,那么这七个空格字符将被规范化为一个空格。同样,如果您有一些文本、一个回车符和一些其他文本,则该回车符将被规范化为一个空格。

您可能认为这是不可取的,但如果返回只是默默地删除,至少会有同样多的奇怪情况。

您无法阻止那些导致输入元素之间存在空格的返回,但您可以在每个动态添加的输入元素之后动态插入一个空格。这样,所有输入、“硬编码”输入和您通过脚本添加的输入之间都有一个空格。

没有任何使代码看起来漂亮的尝试:

var addElements = document.getElementById("ingredient_" + ingredientCount);
addElements.appendChild(Quantity);
addElements.appendChild(document.createTextNode(" "));
addElements.appendChild(Unit);
addElements.appendChild(document.createTextNode(" "));
addElements.appendChild(Type);

那(或类似的东西)应该以与硬编码输入相同的方式分隔动态输入。

关于javascript - 我能以某种方式阻止我的代码中的返回在表单元素之间添加间距吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11761261/

相关文章:

javascript - 在 Jqgrid 添加/编辑表单中显示一些标签

JavaScript 和问题

html - 如何设置具有两个区域的 BorderContainer?

asp.net-mvc 和 webforms 共存

javascript - document.querySelector ('.create-option:first-child' ).click() 不起作用

javascript - 从 PHP 重定向到 HTML 输入值

c# - 对象与 Knockoutjs 的绑定(bind)列表

c# - ASP.NET Web 窗体 : Use same tagPrefix for web controls from different namespaces

javascript - 在没有 Oracle Instant Client 的情况下将 Node.js 与 Oracle 配对

html - div 内的文本行为