DOM脚本:创建元素并将它们放置在一行中
DOM scripting: create elements and position them on one line
我的页面的一些背景信息:
我有一个部分总是有一个输入字段。下面有一个"添加"按钮,可以创建更多输入字段。由于屏幕上只需要一个字段后面的字段带有一个"删除"按钮,该按钮可删除相关输入字段。
以下是它的屏幕截图:http://postimg.org/image/b1yz67b1f/
如您所见,带有"-"的按钮位于每个输入框之后。我要求他们向右走。我试过了display:inline上的"-"/delete按钮无效。
代码:
function addField(count) {
if (count<=4){
count++;
var id = "tag"+count;
var newField = document.createElement("input");
newField.setAttribute('type', 'text');
newField.setAttribute('class', 'field');
newField.setAttribute('id', id);
var place = document.getElementById("tags");
inputContainer.appendChild(newField);
var removeId = "remove"+count;
var remove = document.createElement("input");
remove.setAttribute("type", "button");
remove.setAttribute("value", "-");
remove.setAttribute('class', 'remove');
remove.setAttribute('id', removeId);
remove.onclick = function () {
var targetInput = document.getElementById(id);
var targetRemove = document.getElementById(removeId);
targetInput.remove();
targetRemove.remove();
};
inputContainer.appendChild(remove);
return count;
}
}
您有两个选项:
-
将每一行包裹在自己的
<div>
:中<div><input type="text"><button>-</button></div>
-
在每行后面放一个
<br>
:<input type="text"><button>-</button><br>
对于第一个,您必须调整JS以首先生成<div>
标记,然后在其中添加输入。对于第二个,您可以在制作所有元素时附加它们,只需添加<br>
元素即可。
var div = document.createElement('div');
var input = document.createElement('input');
var button = document.createElement('button');
button.innerText = '-';
div.appendChild(input);
div.appendChild(button);
inputContainer.appendChild(div);
DEMO展示了两个例子:http://jsfiddle.net/7UaAh/1/
就我理解您的问题而言,我提出了以下方法:
JS Fiddle演示
HTML:
<div id="inputContainer">
<div class="inputFieldWithButton">
<input type="text" />
<button onclick="addInput();">+</button>
</div>
</div>
JS:
var id = 1;
function addInput()
{
var inputId = 'input'+id;
document.getElementById("inputContainer").innerHTML += "<div id='"+inputId+"' class='inputFieldWithButton'><input type='text' /><button onclick='removeContainer("+inputId+")'>-</button></div>";
id++;
}
function removeContainer(_inputId)
{
document.getElementById(_inputId.id).remove();
}
希望这能有所帮助。
相关文章:
- 将一行添加到用户动态创建的特定表中
- 我已经创建了一个动态的下拉选择列表,它指向一行;如何使该行成为变量
- 咖啡脚本一行,用于创建带有变量键的哈希图
- 确保追加的行始终是表中由动态创建的行组成的最后一行..detach().
- 在一行中使用克隆功能后,如何为每行创建不同的ID
- 我如何创建一个函数,以便编程行将等到它完成并移动到 javascript 中的下一行
- 如何使用引导程序在一行中存在 3 个缩略图后创建新行
- 为表中的每一行创建mysql删除链接,使用ajax删除并更新表列表
- 试图创建一个可重复使用的函数来生成一行中的单元格.(棋盘)
- 如何在一行中创建TextInputs?(React Native)
- 如何使用ng repeat以缩略图格式创建一行中有n个项目的m个项目的列表
- 试图创建一个带有删除每一行的按钮的表,但它只适用于一行(javascript)
- Titanium:自动选择动态创建的行的第一行
- Node.js console.log-是否可以更新一行而不是创建一行
- 在一行中使用键:值创建对象
- 创建一个文件并插入一行
- 在一行中创建稀疏数组
- 我如何在canvas的循环中创建一行星星
- 从数组的字符串创建表,使每个字符串是它自己的列,每一行是字符串的一个字母
- JS Twitter小部件总是创建新的换行,需要在同一行