Javascript附加输入字段

时间:2013-05-12 18:51:11

标签: javascript

我有这个脚本JsFiddle,我正在尝试更改提交的字符,但是当你按s两次而不是ss而不是显示xx时将其更改为ss

完整代码:

<body>
    <div id='out'></div>

    <textarea id="in" name="messages" onkeyup="test()"></textarea>
    <input type="submit" id="submit" name="submit" />

Js功能:         

    function test(){            
        var origin = document.getElementById("in").value;
        var send = document.getElementById("out"); 

       if(origin =='s'){
        origin = 'z';
       }
        send.innerHTML = origin;
    }

    </script>

2 个答案:

答案 0 :(得分:1)

var replacements = {
    "s": "z",
    // repeat for all the characters you want to replace
};

var neworigin = '';
for (var i = 0; i < origin.length; i++) {
    neworigin += (origin[i] in replacements) ? replacements[origin[i]] : origin[i];
    }
}
send.innerHTML = neworigin;

答案 1 :(得分:0)

在分配给s之前,您似乎想要用z替换所有send个字符。如果s只有一个z,那么您当前的代码只会将origin替换为s。试试这个:

send.innerTHML = origin.replace(/s/g, 'z');

这会在s中将z的{​​{1}}替换为origin,并将结果分配给send.innerHTML。 (如果不明显,用这个你就可以摆脱if语句。)

如果要使用相同的替换字符替换所有字符,可以将正则表达式从/s/g更改为/./g。如果你想用依赖于角色的其他东西替换每个角色,你可以使用查找功能:

var mapper = function(match) {
    return match === 's' ? 'z' : '?'; // or whatever mapping function you want
}
send.innerHTML = origin.replace(/./g, mapper);