我有这个脚本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>
答案 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);