【问题标题】:upper case and lower case in text area文本区域中的大写和小写
【发布时间】:2012-11-07 00:04:08
【问题描述】:

我有 2 个textareamaxlenghth25

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

【问题讨论】:

  • 你能发布完整的脚本吗?你是如何初始化 x1 和 x2 的?
  • var x1=document.getElementById("text1").value; var x2=document.getElementById("text2").value;
  • 请更新脚本,以便我们可以看到全部内容,否则我们无法为您提供帮助
  • ths 是文本区域

  • 这个 MyFunction() 在哪里?请用整个代码更新您的问题

标签: javascript


【解决方案1】:

您可以执行上述操作,也可以检查哪个 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; 
}

}

【讨论】:

    【解决方案2】:

    无论用户输入哪个文本区域,您都会调用相同的函数,并且该函数会更新 both 文本区域的值。具体来说,您的函数采用在第一个 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(),从第二个文本区域调用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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-03
      • 2012-05-14
      • 2013-03-06
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      相关资源
      最近更新 更多