Javascript 在字符数组中循环

Javascript 在字符数组中循环,javascript,arrays,loops,textbox,toggle,Javascript,Arrays,Loops,Textbox,Toggle,我想为一组不断变化的特定字符循环一个数组。从那时起,我想切换字母的大小写,我被告知要使用这个特定的代码,但我无法让它工作。代码必须在字符数组中循环,其中的字符来自输入文本框。我怎样才能解决这个问题 我应该提到的是,我是在高中的课堂上做这项工作的,所以我在编码方面并没有近乎完美的地方 也许您应该看看一些api和Howto,但以下是您的代码: 这是一个完成任务的for循环。记住.toUpperCase和.toLowerCase是函数您可能想看看字符串的拆分方法 var str = 'foo bar

我想为一组不断变化的特定字符循环一个数组。从那时起,我想切换字母的大小写,我被告知要使用这个特定的代码,但我无法让它工作。代码必须在字符数组中循环,其中的字符来自输入文本框。我怎样才能解决这个问题

我应该提到的是,我是在高中的课堂上做这项工作的,所以我在编码方面并没有近乎完美的地方


也许您应该看看一些api和Howto,但以下是您的代码:


这是一个完成任务的for循环。记住.toUpperCase和.toLowerCase是函数

您可能想看看字符串的拆分方法

var str = 'foo bar baz';
var charArray = str.split(''):
// charArray === ['f','o','o' ... 'b','a','z']; 
将字符串转换为字符数组的最简单方法是将空字符串传递给split方法

var str = 'foo bar baz';
var charArray = str.split(''):
// charArray === ['f','o','o' ... 'b','a','z']; 
另外,为了便于参考,将空格字符传递到split中会得到一个单词数组

var wordArray = str.split(' ');
// wordArray === ['foo', 'bar', 'baz'];
我有点不清楚要解决什么问题,但看起来需要一个函数将大写字母转换为小写字母,反之亦然

var userInput = document.getElementById('someTextBox');
// If you want to be fancy you could use JQuery
// var userInput = $(#someTextBox').value() 

function toggledCase( str ) {

    var characters = str.split('');
    // The split method still uses iteration so should be able to say it 
    // satisfies the argument of looping through each character.  
    // Split just provides a good abstraction to interface with.

    var toggledCharacters = [];
    var i;
    var ch;
    for( i in characters ) {
        // For in loops on strings will return the indexes instead 
        // of the characters
        ch = characters[i];

        if( ch.toUpperCase() === ch ){
            toggledCharacters.push( ch.toLowerCase() );
        } else {
            toggledCharacters.push( ch.toUpperCase() );
        }

        // If you like one-liners, 
        // the conditional if statement could be replace with a ternay statement.

        //  toggledCharacters.push( ( ch.toUpperCase() === ch ) ? 
        //  ch.toLowerCase() : ch.toUpperCase();
    }

    return toggledCharacters;
}
我的toggledCharacters方法只返回一个字符数组,所以如果您想作为字符串返回,可以创建一个for循环

var arr = toggledCharacters('Foo'); // str = 'fOO';
var str = '';  

var i, ch;
for ( i in arr ) {
    str += arr[i]; // += is just a short hand notation of saying 
                   //      str = str + arr[i];
}
如果您很懒,并且喜欢单行程序,那么可以看看函数式编程。这有点超出范围,因为你还在上高中

var arr = toggledCharacters('Foo'); // str = 'fOO';
var str = arr.reduce( function(str, ch) {
    return str + ch;
} );
无论如何,在我看来,这比老师概述的要干净得多

function toggledCharacters(input) {
    input = input.split('');
    var output = [];

    var i, ch;
    for( i in input ) {
        output.push( ( input[i].toUpper() === input[i] ) ?
            input[i].toLower() : input[i].toUpper()
        );
    }

    return output.reduce( 
        function(str, ch) {
            return str + ch;
        }
    );
}
编辑:

哦,我只是注意到,在代码中,没有任何地方是正在计算的复选框布尔值

var checkBox = document.getElementByName('toggle');
var inputTextBox = document.getElementById('input'); 
var outputTextBox = document.getElementById('output');

var result = inputTextBox.value;

if( checkBox.checked ) {
    result = toggleCase( result );
}

outputTextBox.value = result;
哦,另一个供参考,因为你是初学者。确保您知道如何使用浏览器的控制台

如果您使用的是Firefox,请使用firebug应用程序

Chrome,按Ctrl-Shift-C

我也有一个,我只是不想用它

与制作html演示页面并假设代码正常工作相比,控制台更容易使用JS进行实验


另外,这些开发工具可以向您展示对象的底层方法。这是一种快速学习JS的好方法。

javascript而不是java,使用正确的标记调用document.getElementById会让您在该循环中多次遇到性能问题。您到处都缺少分号!这些for循环只会让您感到困惑,因为您使用a作为计数器,而iHere引用是一个JSFIDLE供您使用
var checkBox = document.getElementByName('toggle');
var inputTextBox = document.getElementById('input'); 
var outputTextBox = document.getElementById('output');

var result = inputTextBox.value;

if( checkBox.checked ) {
    result = toggleCase( result );
}

outputTextBox.value = result;