【问题标题】:Why does the Javascript replace() function not do anything? [closed]为什么 Javascript 的 replace() 函数什么都不做? [关闭]
【发布时间】:2013-09-05 23:15:47
【问题描述】:

这是我的功能:

CSS_Left = '450px';
CSS_Left.replace('px', '');
alert(CSS_Left);

它返回'450px'

这是一个例子:

http://jsfiddle.net/D2Mgb/

我希望它用任何内容替换“px”。

【问题讨论】:

标签: javascript


【解决方案1】:

在 JavaScript 中,Strings 是不可变的。

除了对象之外的所有类型都定义了不可变的值。具体来说,字符串是不可变的(例如,与 C 不同)。

所以,str.replace 返回一个新字符串。试试这个:

CSS_Left = CSS_Left.replace('px', '');

或者如果您不想覆盖原始字符串,只需在alert 调用中进行操作

alert(CSS_Left.replace('px', ''));

值得注意的是,.replace 也可以采用正则表达式。尽管在您的情况下没有必要,但您可以执行类似的操作来获得相同的结果

CSS_Left = CSS_left.replace(/px$/, '');

【讨论】:

  • 我不敢相信我错过了那个 X(。非常感谢!这让我很困惑。
  • 此外,String 对象是不可变的。您不能编辑它们,只能创建修改后的新实​​例。
  • @LexLythius,我会记下。感谢您的评论。
【解决方案2】:

因为.replace() 返回一个新字符串。如果你想更新旧字符串,你应该写: CSS_Left = CSS_Left.replace('px', '');

【讨论】:

    【解决方案3】:

    我不确定,但是函数 replace() 创建了一个新变量。 试试这个:

    var CSS_Left = '450px';
    CSS_Left = CSS_Left.replace('px', '');
    alert(CSS_Left);
    

    【讨论】:

      【解决方案4】:

      replace 调用的输出需要重新分配给 CSS_Left

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-01
        • 1970-01-01
        • 2018-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多