使用jquery选择器和javascript正则表达式更改字符串

使用jquery选择器和javascript正则表达式更改字符串,javascript,jquery,regex,Javascript,Jquery,Regex,我所要做的就是用字母“I”替换字母“y”,在所有的s中使用某个类。我不知道为什么我的脚本不起作用。我知道选择器正在工作,因为我可以将该方法交换为类似hide()的东西,并且它可以工作。我还可以将replace()的值赋给一个变量,该变量显示正确的替换。所以我很困惑为什么两者的结合不起作用 <script type="text/javascript" src=".../jquery.min.js"></script> <script type="text/javasc

我所要做的就是用字母“I”替换字母“y”,在所有的s中使用某个类。我不知道为什么我的脚本不起作用。我知道选择器正在工作,因为我可以将该方法交换为类似hide()的东西,并且它可以工作。我还可以将replace()的值赋给一个变量,该变量显示正确的替换。所以我很困惑为什么两者的结合不起作用

<script type="text/javascript" src=".../jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(
function() {
    $("span.certain_class").text().replace(/y/g, "i");
}
);
</script>';
每一个跨度都会导致另一个跨度的文本混乱。

第一行的打字错误

<script type="text/javascript" src=".../jquery.min.js"></script>

第一行输入错误

<script type="text/javascript" src=".../jquery.min.js"></script>

您的脚本确实正确地将所有的“y”替换为“i”,但它不会将值赋回dom元素

您的脚本确实正确地将所有“y”替换为“i”,但它不会将值赋回dom元素。

函数
text()
只获取内容。但是,如果您是当前代码的一部分,则不会替换内容

var replacement = $("span.certain_class").text().replace(/y/g, "i");
$("span.certain_class").text(replacement);
text()
函数只获取内容。但是,如果您是当前代码的一部分,则不会替换内容

var replacement = $("span.certain_class").text().replace(/y/g, "i");
$("span.certain_class").text(replacement);

好吧,你的解决方案是有效的,但你没有对结果做任何事情。是否要替换div中的文本?试试这个:

$(document).ready(function() {
        var elm = $("span.certain_class");
        var text = elm.text().replace(/y/g, "i"); // Get current text and replace y to i
        elm.text(text); // Set new text
    }
);

好吧,你的解决方案是有效的,但你没有对结果做任何事情。是否要替换div中的文本?试试这个:

$(document).ready(function() {
        var elm = $("span.certain_class");
        var text = elm.text().replace(/y/g, "i"); // Get current text and replace y to i
        elm.text(text); // Set new text
    }
);
不带参数调用只返回元素的内部文本,而且由于字符串在Javascript中是不可变的,因此对
replace()
的调用将创建一个新字符串,该字符串将立即被遗忘

您可以将函数传递到
text()
,以便从上一个值生成新值:

$("span.certain_class").text(function(index, currentText) {
    return currentText.replace(/y/g, "i");
});
不带参数调用只返回元素的内部文本,而且由于字符串在Javascript中是不可变的,因此对
replace()
的调用将创建一个新字符串,该字符串将立即被遗忘

您可以将函数传递到
text()
,以便从上一个值生成新值:

$("span.certain_class").text(function(index, currentText) {
    return currentText.replace(/y/g, "i");
});
应该是:

var replaceSpan = $("span.certain_class")
replaceSpan.text(replaceSpan.text().replace(/y/g, "i"));
您需要将字符串传递给
.text()
方法。您当前所做的只是将
span.某些类的文本作为字符串(
.text()
)抓取,执行替换(
.replace(…)
),但不使用生成的字符串执行任何操作。

应该是:

var replaceSpan = $("span.certain_class")
replaceSpan.text(replaceSpan.text().replace(/y/g, "i"));

您需要将字符串传递给
.text()
方法。您当前所做的只是将
span.某些类的文本作为字符串(
.text()
)抓取,执行替换(
.replace(…)
),但不使用生成的字符串执行任何操作。

谢谢!有点离题的后续问题:我知道/I标志将使regex搜索不区分大小写,但是有没有一种优雅的方法使替换内容与原始大小写相对应?非常酷!我不知道您可以将函数作为replace()的第二个参数传递。我只想确保我理解一件事:函数的“s”参数是在哪里分配的?
函数
得到了它。谢谢我有一个相关的问题,但它偏离了原来的主题,所以我开始了一个新问题:谢谢!有点离题的后续问题:我知道/I标志将使regex搜索不区分大小写,但是有没有一种优雅的方法使替换内容与原始大小写相对应?非常酷!我不知道您可以将函数作为replace()的第二个参数传递。我只想确保我理解一件事:函数的“s”参数是在哪里分配的?
函数
得到了它。谢谢我有一个相关的问题,但它偏离了原来的主题,所以我开始了一个新问题: