Javascript 在输入标记之前或之后替换文本标签
在HTML中,我有一些带有标签的输入标记:Javascript 在输入标记之前或之后替换文本标签,javascript,dom,Javascript,Dom,在HTML中,我有一些带有标签的输入标记: <label>Address <input type="text" name="address" /></label> <label><input type="text" name="surname" /> Surname</label> 不幸的是,标签在输入之前和之后。第一个孩子和最后一个孩子一样 我知道可以将标签放入并使用getElementById。但我不喜欢。 也许还可以
<label>Address <input type="text" name="address" /></label>
<label><input type="text" name="surname" /> Surname</label>
不幸的是,标签在输入之前和之后。第一个孩子和最后一个孩子一样
我知道可以将标签放入
并使用getElementById。但我不喜欢。也许还可以将
id
或for
添加到标签中。。。但我不喜欢
如何轻松地替换“输入之前或之后的第一个TextNode同级”?我强烈建议使用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"; });
});
应该有用!此处演示:
请参见和您可以遍历
子节点
,找到文本节点的第一个实例
,然后替换文本
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");
var replaceText=函数(inputName,newText){
var TEXT_NODE=3,
input_name=document.getElementsByName(inputName)[0],
nodes=input_name.parentNode.childNodes;
对于(i=0;i
不起作用,请参阅。另外,从问题来看,他似乎想替换在输入之前或之后出现的
TEXT\u节点
。使用.html()
您也将销毁
。谢谢,非常好。为什么严格的equalnodeType===3
而不是==3
?请参阅关于==
和===
的回答
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");