0

私はこのスクリプトJsFiddleを持っていて、送信された文字を変更しようとしていますが、 ex: を押すと、表示sするss代わりxxss

完全なコード:

<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>
4

2 に答える 2

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;
于 2013-05-12T19:16:06.547 に答える
0

に割り当てる前に、すべてのs文字をに置き換えたいようです。現在のコードは、 if is exact one にのみ置き換えられます。代わりにこれを試してください:zsendszorigins

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

これにより、すべての出現が in に置き換えsられzorigin結果が に割り当てられ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);
于 2013-05-12T18:53:54.483 に答える