0

私は2つtextarea持っmaxlenghthてい25ます:

<textarea row='5' cols='25' maxlength="200" name="address" id="text1"
          value="text1" onkeyup="MyFunction()"></textarea>
<br><br>
<textarea row='5' cols='25' maxlength="200" name="address1" id="text2"
          value="text2" onkeyup="MyFunction()"></textarea>

1番目に小文字を入力するtextareaと、大文字が印刷されますが、2番目textareaに文字を入力すると、最初の文字は印刷されませんtextarea。助けてください。

function MyFunction() {
    var x1 = document.getElementById("text1").value;
    var x2 = document.getElementById("text2").value;
    var z = '';
    for (i = 0; i < x1.length; i++) {
        y = x1.charAt(i);
        if (y == y.toLowerCase()) {
            z = z + y.toUpperCase();
        } else {
            z = z + y.toLowerCase();
        }
    }
    document.getElementById("text2").value = z;
    var z1 = '';
    for (j = 0; j < x2.length; j++) {
        y1 = x2.charAt(j);
        if (y1 == y1.toLowerCase()) {
            z1 = z1 + y1.toUpperCase();
        } else {
            z1 = z1 + y1.toLowerCase();
        }
    }
    document.getElementById("text1").value = z1;
}
4

2 に答える 2

0

上記の操作を実行するか、どのテキストエリアに文字数が多いかを確認して、もう一方のテキストエリアを更新することができます。

function MyFunction()   {
var x1=document.getElementById("text1").value; 
var x2=document.getElementById("text2").value; 
var z=''; 

if (x1.length > x2.length)
{
    for(i=0;i<x1.length;i++) 
    { 
        y=x1.charAt(i); 
        if(y==y.toLowerCase()) 
        { 
            z=z+y.toUpperCase();
        } 
        else 
        { 
            z=z+y.toLowerCase(); 
        } 
    } 
    document.getElementById("text2").value=z; 
}
else
{
    var z1=''; 
    for(j=0;j<x2.length;j++) 
    { 
        y1=x2.charAt(j); 
        if(y1==y1.toLowerCase()) 
        { 
            z1=z1+y1.toUpperCase(); 
        } 
        else 
        { 
            z1=z1+y1.toLowerCase(); 
        } 
    } 

    document.getElementById("text1").value=z1; 
}

}

于 2012-11-19T05:02:17.387 に答える
0

ユーザーが入力したテキストエリアに関係なく同じ関数を呼び出すと、その関数は両方のテキストエリアの値を更新します。具体的には、関数は最初のテキストエリアに入力されたものをすべて受け取り、文字の大文字と小文字を反転して、2番目のテキストエリアに書き込みます。次に、すでに更新された値をベースとして使用することを除いて、2番目のテキストエリアを同じ方法で処理します。

したがって、2番目のテキストエリアに入力すると、入力した内容が処理される前に上書きされます。

希望する動作が何であるかは完全にはわかりませんが、どちらかのテキストエリアに入力してもう一方を更新するつもりだと思います。それを達成するために頭に浮かんだ最初の方法は、次のように関数を2つに分割することでした。

function MyFunction1() {
    var x1 = document.getElementById("text1").value;
    var z = '';
    for (i = 0; i < x1.length; i++) {
        y = x1.charAt(i);
        if (y == y.toLowerCase()) {
            z = z + y.toUpperCase();
        } else {
            z = z + y.toLowerCase();
        }
    }
    document.getElementById("text2").value = z;
}
function MyFunction2(){
    var x2 = document.getElementById("text2").value;
    var z1 = '';
    for (j = 0; j < x2.length; j++) {
        y1 = x2.charAt(j);
        if (y1 == y1.toLowerCase()) {
            z1 = z1 + y1.toUpperCase();
        } else {
            z1 = z1 + y1.toLowerCase();
        }
    }
    document.getElementById("text1").value = z1;
}

MyFunction1()次に、最初のテキストエリアから1つを新しいものと呼びMyFunction2()、2番目のテキストエリアから呼び出します。

<textarea row='5' cols='25' maxlength="200" name="address" id="text1"
          value="text1" onkeyup="MyFunction1()"></textarea>
<br><br>
<textarea row='5' cols='25' maxlength="200" name="address1" id="text2"
          value="text2" onkeyup="MyFunction2()"></textarea>

デモ: http: //jsfiddle.net/Ntqq7/

于 2012-11-19T04:57:35.323 に答える