JavaScript切换变量?

时间:2014-06-24 18:34:11

标签: javascript jquery variables switch-statement

我想检查一个字符串是否有某个字母,然后删除所述字母。

jsFiddle - http://jsfiddle.net/nNb5S/6/

例如,如果您输入...

  • XhelloX
  • YhelloY
  • ZhelloZ

..在“输入”textarea中,“结果”应该返回...

  • 你好
  • 你好
  • 你好

我已经弄明白了,但我想知道是否可以通过Switch完成?

这是我的工作代码::

function doSomething() {

var input = document.getElementById("h"),
    result = document.getElementById("m");

var x = /x/gi;
var y = /y/gi;
var z = /z/gi;

if(input.value.indexOf(x)) {
    result.value = input.value.replace(x,"");        
}
if(input.value.indexOf(y)) {
    result.value = result.value.replace(y,"");        
}
if(input.value.indexOf(z)) {
    result.value = result.value.replace(z,"");        
}

}

这是我的切换代码:: 以下代码 ONLY 在定义arg时有效;但是,我不想定义它。

function doSomething() {

var input = document.getElementById("h"),
    result = document.getElementById("m");

var x = /x/gi;
var y = /y/gi;
var z = /z/gi;

/*arg = x;*/ // ONLY WORKS WHEN YOU DEFINE arg.  HOW DO YOU DEFINE arg AS ANY OF THE VARIABLES?

var iO = input.value.indexOf(arg);

switch (arg) {

    case x:
        result.value = input.value.replace(x, "");
    break;
    case y:
        result.value = result.value.replace(y, "");
    break;
    case z:
        result.value = result.value.replace(z, "");
    break;

}
}

2 个答案:

答案 0 :(得分:3)

switch语句肯定是的方式。一个更好的选择是使用像这样的单个正则表达式替换:

function doSomething() {
    var input = document.getElementById("h"),
        result = document.getElementById("m");
    result.value = input.value.replace(/[xyz]/gi, "");
}

Demonstration

但是既然您已经在使用jQuery,那么可以进一步简化:

function doSomething() {
    $("#m").val($("#h").val().replace(/[xyz]/gi, ""));
}

Demonstration

答案 1 :(得分:1)

indexOf不是您匹配正则表达式的方式。 switch也不是。RegExp.prototype.test。您通常使用if (x.test(input.value)) { result.value = input.value.replace(x,""); } ,如下所示:

result.value = input.value
    .replace(x, '')
    .replace(y, '')
    .replace(z, '');

但看到你正在进行替换,这不是更合适吗?

{{1}}

?除非你真的只想替换匹配的三个 last 正则表达式的匹配。