Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回多个替换项_Javascript_Jquery - Fatal编程技术网

Javascript 返回多个替换项

Javascript 返回多个替换项,javascript,jquery,Javascript,Jquery,我需要在客户端替换多个不同的文本字符串 比如说,我想用“橙黄色”来代替“红苹果”,用“快乐的狗”来代替“悲伤的猫” 我一直在尝试扩展以处理多个替换 $("#container h3 a").text(function () { return $(this).text().replace("Red Apple", "Orange Orange"); return $(this).text().replace("Sad Cat", "Happy Dog"); }); $("#contai

我需要在客户端替换多个不同的文本字符串

比如说,我想用“橙黄色”来代替“红苹果”,用“快乐的狗”来代替“悲伤的猫”

我一直在尝试扩展以处理多个替换

$("#container h3 a").text(function () {
  return $(this).text().replace("Red Apple", "Orange Orange"); 
  return $(this).text().replace("Sad Cat", "Happy Dog");
});
$("#container h3 a").text(function () {
    return $(this).text().replace("Red Apple", "Orange Orange").replace("Sad Cat", "Happy Dog");
});
我发现只有第一个替换品被退回

我在计算如何返回倍数时遇到了困难,也没有得到像这样理想的结果

return {
  ...
}

不存在这种情况的理由:请注意,我并不是在尝试只替换苹果,而是替换猫。

您的第一个
返回值
结束函数。第二个
返回值
从未到达

但你可以把替代品链起来

$("#container h3 a").text(function () {
  return $(this).text().replace("Red Apple", "Orange Orange"); 
  return $(this).text().replace("Sad Cat", "Happy Dog");
});
$("#container h3 a").text(function () {
    return $(this).text().replace("Red Apple", "Orange Orange").replace("Sad Cat", "Happy Dog");
});

您的第一次
返回
结束函数。第二个
返回值
从未到达

但你可以把替代品链起来

$("#container h3 a").text(function () {
  return $(this).text().replace("Red Apple", "Orange Orange"); 
  return $(this).text().replace("Sad Cat", "Happy Dog");
});
$("#container h3 a").text(function () {
    return $(this).text().replace("Red Apple", "Orange Orange").replace("Sad Cat", "Happy Dog");
});

一旦代码到达
return
语句,之后的代码将不会被处理
return
将控制权直接返回给调用方代码

作为

return语句结束函数执行并指定要执行的值 返回给函数调用方

您可以通过以下几种方式处理此类问题:

  • 您可以建立一个值,然后返回该值:

    $("#container h3 a").text(function () {
    
      // Work on your return value as much as you want
      var retVal = $(this).text();
      retVal = retVal.replace("Red Apple", "Orange Orange");
      retVal = retVal.replace("Sad Cat", "Happy Dog");
    
      return retVal;  // And then return it (just once)
    });
    
    请注意,这种方法绝对没有错,因为它易于阅读和理解。

  • 或者,在这种情况下,您可以将
    .replace()
    调用链接起来,因为每次调用
    .replace()
    时,它都会返回一个新字符串,然后可以调用
    .replace()
    。最后一个字符串将作为原始
    return
    实际发送回的值返回:

    $("#container h3 a").text(function () {
      return $(this).text().replace("Red Apple", "Orange Orange")
               .replace("Sad Cat", "Happy Dog");
    });
    
    请注意,这种方法实现了完全相同的功能,但它更紧凑、更精确,并且不需要临时存储变量。


  • 一旦代码到达
    return
    语句,之后的代码将不会被处理
    return
    将控制权直接返回给调用方代码

    作为

    return语句结束函数执行并指定要执行的值 返回给函数调用方

    您可以通过以下几种方式处理此类问题:

  • 您可以建立一个值,然后返回该值:

    $("#container h3 a").text(function () {
    
      // Work on your return value as much as you want
      var retVal = $(this).text();
      retVal = retVal.replace("Red Apple", "Orange Orange");
      retVal = retVal.replace("Sad Cat", "Happy Dog");
    
      return retVal;  // And then return it (just once)
    });
    
    请注意,这种方法绝对没有错,因为它易于阅读和理解。

  • 或者,在这种情况下,您可以将
    .replace()
    调用链接起来,因为每次调用
    .replace()
    时,它都会返回一个新字符串,然后可以调用
    .replace()
    。最后一个字符串将作为原始
    return
    实际发送回的值返回:

    $("#container h3 a").text(function () {
      return $(this).text().replace("Red Apple", "Orange Orange")
               .replace("Sad Cat", "Happy Dog");
    });
    
    请注意,这种方法实现了完全相同的功能,但它更紧凑、更精确,并且不需要临时存储变量。


  • 我认为您应该能够通过在一个return语句中调用replace两次来实现这一点

    return $(this).text().replace("Red Apple", "Orange Orange").replace("Sad Cat", "Happy Dog");
    

    我认为您应该能够通过在一个return语句中调用replace两次来实现这一点

    return $(this).text().replace("Red Apple", "Orange Orange").replace("Sad Cat", "Happy Dog");
    

    对值得补充的是,@AllInOne的代码被破坏的原因是一个函数在返回时实际上结束了。值得补充的是,@AllInOne的代码被破坏的原因是,函数一旦返回,它就会有效地结束。您的第二次返回永远不会达到,因为您第一次已经从函数返回。@dave我已经添加了我的理由,说明这不是重复的。您的第二次返回永远不会达到,因为您已经返回了第一次返回函数。@dave我已经添加了我的理由,说明这不是重复的。