0

我有2textareamaxlenghth25

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

如果我在第一个输入小写字符textarea,则会打印一个大写字符,反之亦然。但如果我在第二个输入一个字符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

无论用户输入哪个文本区域,您都调用相同的函数,并且该函数会更新两个文本区域的值。具体来说,您的函数采用在第一个 textarea 中输入的任何内容,反转字母的大小写,并将其写入第二个 textarea。然后,它以相同的方式处理第二个文本区域,除了使用已经更新的值作为基础。

因此,当您输入第二个 textarea 时,刚刚输入的任何内容都会在处理之前被覆盖。

我不完全清楚你想要的行为是什么,但我猜你打算输入任何一个文本区域来更新另一个。想到的第一个方法是将您的功能分成两部分,如下所示:

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()然后从第一个 textarea调用一个 new并MyFunction2()从第二个调用:

<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 回答
0

您可以执行上述操作,也可以检查哪个 textarea 有更多字符并简单地更新另一个

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 回答