附加innerHTML为第一个元素创建一个空白
Appending innerHTML creates a gap for the first element
我有一个简单的应用程序,如果用户按TAB或空格;一个新的输入字段被添加到div元素中。
下面是用于保存输入字段的div元素的代码片段:
<div class="container" id="container" onkeydown="KeyDown(event)">
<input type="text" maxlength="15" id="0"/>
</div>
以下是我用来添加输入字段的JavaScript代码:
function KeyDown(e) {
var container = document.getElementById("container");
if(e.which === 9 || e.which === 32) { //User pressed Tab or Space
container.innerHTML += "<input type='text' maxlength='15' id='0'/>";
}
}
这是可行的,但是在第一个和第二个文本输入字段之间有8px的margin/gap(比默认的CSS多4px)。只有第一个输入字段有额外的4px边距,即使页面的CSS和HTML在Chrome中所有输入字段都是相同的。
这个问题是通过替换innerHTML容器与以下Javascript:
if(c === 1) { //c is the number/count of input elements
container.innerHTML = "<input type='text' maxlength='15' id='0'/>";
}
...
c++;
为什么在用HTML添加初始输入字段时发生这种情况,而不是替换innerHTML并增加每个输入字段?
两个输入标签之间会有空白(换行符和格式空格)。这将导致一个单独的空间被渲染,这将是你额外的4px。它应该工作,如果你改变你的初始html为:
<div class="container" id="container" onkeydown="KeyDown(event)">
<input type="text" maxlength="15"
id="0"/></div>
糟糕的格式,但是标签内的换行符没有格式化。
我认为如果你添加新的输入而不是操作innerHTML
,你也可以避免空格:
function KeyDown(e) {
var container = document.getElementById("container");
if(e.which === 9 || e.which === 32) { //User pressed Tab or Space
var newInput = document.createElement('input');
newInput.id = "0";
newInput.type = "text";
newInput.maxlength = "15"
container.appendChild(newInput);
}
}
顺便说一下,数字id是无效的-它应该以字母开头。在html中,id属性的有效值是什么
在第一种情况下,div中有一些空白。
...keydown="KeyDown(event)"> [space] [space] [cr] [lf]
[space] [space] <input type="text" max...> [space] [cr] [lf]
[space] [space] [tab] </div>
你可以写:
<div ...><input ... /></div>
相关文章:
- php重定向到一个空白页面
- laravel中的ajax会重新加载一个空白页面
- jQuery's$.post只返回一个空白数据
- I'当我试图将java脚本加载到web视图中时,我得到了一个空白屏幕
- Facebook重定向到一个空白的权限请求页面
- 我正在尝试将 HTML 画布转换为 HTML 图像,但得到一个空白图像
- 提交邮件黑猩猩订阅 php 后,我有一个空白页
- 当我打开它时,它会显示一个空白网页
- 提交回复后 Ajax 它显示一个空白的数据空间
- 当我添加javascript时,它会显示一个空白页
- 为什么当我在 Emberjs 中最后用“id”刷新 url 时,我得到一个空白应用程序
- 使用按钮使用文本框中的值更新数据库字段,它显示一个空白值
- 我得到一个空白值和未定义的索引
- 使用jquery的javascript传递一个空白值
- 为什么这个Meteor示例应用程序只显示一个空白页面
- 有什么方法可以让用户从角度下拉菜单中选择一个空白值吗
- 为什么可以't我在浏览器中运行一个空白的Cordova应用程序:您可能没有运行此项目所需的环境或操作系统
- 如何将一个空白字符串变量设置为等于另一个字符串变量
- 使用不同的持续时间显示一个接一个的图像,中间有一个空白屏幕
- 当结果集为null时,JasperRunManager.runReportToPdfStream返回一个空白pdf