【问题标题】:Why doesn't this javascript replace work? (contains no regex)为什么这个javascript替换不起作用? (不包含正则表达式)
【发布时间】:2013-10-06 09:19:11
【问题描述】:

代码如下:

 alert(oldVars);
 alert("change "+prevNumber+" to "+newNumber)
 newVars = oldVars.replace(prevNumber,newNumber);
 alert(newVars);

oldVars 是一个包含一些文本和一个数字的字符串,例如"Product ID 39203".

prevNumber 是例如39203

我想将39203 更改为200newNumber 设置为 200

oldVars 的警报显示"Product ID 39203"

"change" 的警报显示"change 39203 to 200"

newVars 的警报从未出现,所以我假设替换代码中有错误。但是错误是什么?为什么我的代码不起作用?

我的目标是拥有"Product ID 200"

我使用变量而不是字符串/整数,因为数字因类别而异,所以我无法静态输入数字,因为我不知道它们是什么。

它在这里工作: http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_replace

只是不在我的代码中...

【问题讨论】:

  • 工作正常 - 请参阅 this fiddle
  • 您是否费心查看错误控制台以查看报告了哪些错误?
  • 避免使用 W3Schools) 作为参考。他们的信息有缺陷 - w3fools.com
  • 欢迎来到 Stack Overflow。与其像这样描述上下文,我鼓励您将帖子表述为一个简单的、独立的示例:将代码 sn-p 中的“prevNumber is for example 39203”替换为“prevNumber = 39203”。通过这种方式,人们可以使用 [jsfiddle](jsfiddle.net) 等工具进行调查并快速帮助您。有关如何提问的更多指示,请参阅How to Ask
  • Mike W - 感谢您的提琴,它完全按照我想要的代码方式工作。不幸的是,完全相同的代码在我的脚本中不起作用......所以我会看看为什么。 jfriend00 - 不,我没有查看错误控制台,但我会在接下来运行脚本时查看。谢谢你。 kfsone - 谢谢你的建议,我以后会记住的。

标签: javascript replace alert


【解决方案1】:

您的代码在这里运行良好:http://jsfiddle.net/manishie/G7PQV/

你可能打错了什么。

Javascript:

var oldVars = "Product ID 39203";
var prevNumber = "39203";
var newNumber = "200";

alert(oldVars);
alert("change "+prevNumber+" to "+newNumber)
newVars = oldVars.replace(prevNumber,newNumber);
alert(newVars);

【讨论】:

    【解决方案2】:

    这可能是因为您试图在字符串中查找整数。如果您首先使用.toString() 将数字转换为字符串,它应该可以工作。

    示例:http://codepen.io/skimberk1/pen/d448dbdf05c290feaddcdd510ec5d72d

    【讨论】:

    • 谢谢,我会尝试使用 toString()。感谢您提供示例代码。
    • 我很高兴能提供帮助。如果答案帮助您解决了问题,如果您竖起大拇指并将其设置为您接受的答案,我将不胜感激。
    【解决方案3】:
    alert(oldVars);
    alert("change "+prevNumber+" to "+newNumber)
    newVars = oldVars.replace(prevNumber,newNumber);
    alert(newVars);
    

    有趣。正如 manishie 所说,你很可能拼错了一些东西。当我遇到这样的错误时,我通常会重新检查我的代码并确保所有内容在语法上都是 100% 合理的,即使我选择的任何模式通常都有效。

    所以,我的建议是添加 ';'结尾:

    alert("change "+prevNumber+" to "+newNumber)
    

    因此:

    alert("change "+prevNumber+" to "+newNumber);
    

    我在显示模块模式中也遇到了类似的奇怪问题,其中键入:

    $(document).ready(function() 
    {
        console.log( "Hehe!" );
    });
    

    在输入时抛出错误:

    $(document).ready(function() {
        console.log( "Hehe!" );
    });
    

    ..没有。

    【讨论】:

    • 分号不是问题,函数的开头{也不是问题。
    • 感谢您的帮助。我不知道为什么它在我的代码中不起作用,但我会检查输入错误。
    • 我知道 user2736012,但是,我在这些事情上遇到了错误——尤其是 RMP,这就是我想说的。我不提供答案,只是一个建议。
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多