替换输入标记之前或之后的文本标签
Replace Text label before or after input tag
在HTML中,我有一些带有标签的输入标签:
<label>Address <input type="text" name="address" /></label>
<label><input type="text" name="surname" /> Surname</label>
我想用javascript函数更改标签文本
我知道这是可能的,例如
input_name.parentNode.firstChild.nodeValue = "New label text";
不幸的是,标签既在输入之前又在输入之后。所以firstChild和lastChild一样。
我知道可以将标签放入<span>
并使用getElementById。但我不喜欢
也许还可以在标签中添加id
或for
。。。但我不喜欢。
如何有效地替换"输入之前或之后的第一个TextNode同级"?
您可以遍历childNodes
,找到TEXT_NODE
的第一个实例并替换文本。
var replaceText = function(inputName, newText) {
var TEXT_NODE = 3,
input_name = document.getElementsByName(inputName)[0],
nodes = input_name.parentNode.childNodes;
for (i = 0; i < nodes.length; i++) {
if (nodes[i].nodeType === TEXT_NODE) {
nodes[i].nodeValue = newText;
break;
}
}
};
replaceText("address", "Not an Address");
replaceText("surname", "Not a Surname");
jsfiddle上的示例
我强烈建议使用像JQuery这样的跨浏览器框架,而不是使用原始Javascript。然后使用Jquery:
$('input').bind("keyup", function(event) {
var textNodes = $(this).parent().contents().filter(function() {
return this.nodeType == Node.TEXT_NODE;
});
textNodes.each(function() { this.nodeValue = "bla"; });
});
应该有效!此处演示:http://jsfiddle.net/Hh33v/6/
请参阅http://api.jquery.com/filter/和http://api.jquery.com/contents/
相关文章:
- 仅当变量有值时才显示D3文本标签
- 只隐藏那些为空或没有文本的跨度
- 如何在 JavaScript 中更改文本标签的堆栈顺序
- 为什么我的导航按钮或按钮文本不会移动到中心
- 如何使用 ContentTools 在之前或之后没有内容时保留多个
- 如何在javascript中使用svg文本标签
- 如何在D3中获得可缩放Icicle布局中文本标签的旋转
- 在d3.js中添加文本标签以强制定向图链接
- 章节文本标签没有't显示在D3.JS向下钻取饼图中
- 在每个条形图的中间添加文本标签&鼠标悬停事件
- x 轴文本标签未与 D3.js 中的条形对齐
- 使用 javascript 移动或存储文本
- 在 D3.js折线图中使用 IMG 而不是文本标签
- 添加或删除文本框,然后使用 PHP 或 jquery 获取它们的值
- 如何在文本的每 5,000 个字符之后的第一个
或
之后插入一个 - 替换输入标记之前或之后的文本标签
- JQuery或Javascript获得标签文本在表格单元格与单选按钮和标签的组合
- CodeMirror:如何在光标位置之前或之后读取编辑器文本
- 在HTML元素之前或之后添加文本
- 从文本输入中剪切或替换html标签