Javascript 如何更改不能通过标记、id或类选择的文本?

Javascript 如何更改不能通过标记、id或类选择的文本?,javascript,jquery,html,Javascript,Jquery,Html,我需要更改文本以更改。如何使用jQuery实现这一点 <form name="loginform" id="loginform" action="" method="post"> <p> <label for="user_login">text to change<br /> <input type="text" name="log" value="" /></label> &

我需要更改
文本以更改
。如何使用jQuery实现这一点

<form name="loginform" id="loginform" action="" method="post">
    <p>
        <label for="user_login">text to change<br />
        <input type="text" name="log" value="" /></label>
    </p>
</form>


要更改的文本

见:


我明白了,有点不同,比如:

var splitElem = "<br>";
var saveHtml = $("label[for='user_login']").html().split(splitElem)[1];
var newText = "New Text"
var newHtml = newText + splitElem + saveHtml;
$("label[for='user_login']").html(newHtml);
var splitElem=“
”; var saveHtml=$(“label[for='user_login']).html().split(splitElem)[1]; var newText=“新文本” var newHtml=newText+splitElem+saveHtml; $(“label[for='user\u login']”)html(newHtml);
span
标记包装文本

<label for="user_login"><span>text to change<span><br />
<input type="text" name="log" value="" /></label>

$("label[for=user_login] > span").text("replaced text");
要更改的文本
$(“label[for=user\u login]>span”).text(“替换文本”);
要仅替换textnode,请执行以下操作:

var newText = 'some text',
    elm = $('label[for="user_login"]').children();
    $('label[for="user_login"]').html(newText).append(elm);

这将是一个很好的解决方案,因为在HTML中,您无法选择和接近文本。您只能影响周围的标记

你现在有一些可能性

  • 关闭输入标记之前的标签并更改孔标签的内容
  • 将标签的文本包装在另一个标记(如span)中并输入span
  • 不要更改HTML结构,使用JS获取标签的内容,并在之前替换由正则表达式过滤的空白文本。
  • 在JS中,保存输入元素,替换标签的孔内容,然后再次追加输入元素
试试看:

var newText = 'some text';
$('label[for="user_login"]').contents().filter(function() { return this.nodeType == 3; }).first().replaceWith(newText);​


我对此的性能不作任何保证:)但它应该可以。

此解决方案替换所有内部标签内容(包括输入内容)啊,我的错。我没有仔细看你的标签。我用小提琴把

通过我的浏览器变成了

,所以你需要调整一下。是的,我在来这里之前尝试过类似的解决方案。最终解决方案的好处在于,它可以应用于
标签
中各个部分的文本。考虑到。。。THX。-为什么不在输入之前将文本包装在span标记中或关闭标签标记?不,请查看内部标签内容包含更多html内容@马恩。这不是同一个问题,因为Nomik的标签包含另一个标记(输入)。@NomikOS是否有理由将输入放在标签标记内?恐怕大多数人都不会这样构造它。@sharethis我无法触及已经存在的html!这就是为什么我需要动态地做它。“你只能影响周围的标签。”-那不是真的。一旦获得对文本节点的引用,就可以使用@nnnn更改它。我以前不知道。但是如何获得推荐呢?好吧,这是我通过搜索找到的第一个推荐信:@NomikOS,老实说,我建议不要使用它;如果您完全不能修改标记,那么这是一个解决方案,但是如果您不修改标记,那么进行一些更改将允许更快的选择器。在本例中,我将
Wordpress
登录表单(/wp login.php)中的经典
Username
标签替换为
用户名或电子邮件(/wp login.php)(任何wp
hook
都不能修改它)。再次感谢-
var newText = 'some text';
$('label[for="user_login"]').contents().filter(function() { return this.nodeType == 3; }).first().replaceWith(newText);​