2013-02-18 30 views
-2

我想循环使用一个数组,以查找不断变化的特定字符集。从那里开始,我想切换这些字母的大小写,并且我被告知要使用这个特定的代码,但是我无法使它工作。该代码必须循环遍历字符数组,其中字符来自“输入”文本框。我怎样才能解决这个问题?在字符数组中循环

我应该提到,我在高中上课,所以我没有接近完美的编码。


<html> 
     <head> 
     <script type="text/javascript"> 
    function toggleCase() { 
     var i = document.getElementById("input").value.length; 
     var word = document.getElementById("input").value; 
     var chop =new array(i); 
     for (a=i; a <= i; a++) { 
      character[i] = word.slice(i-1,i) 
      if (character[i] == character[i].toUpperCase;){ 
       character[i] = character[i].toLowerCase(); 
      } 
      else { 
       character[i] = character[i].toUpperCase(); 
      } 
     } 

     var final 

     for (a=i; a <= i; a++) { 
      final += character[i]; 
     } 

     document.getElementById("output").value = final 
    } 
     </script> 
     </head> 
     <body> 
     <p>Enter letters for conversion:</p> 
     <form> 
      <input type="text" name="input" id="input" value="sample" maxlength="10"><br /> 
      <input type="text" name="output" id="output" value="" /> <br/> 
      <input type="checkbox" name="toggle" value="ToggleCase" onClick="toggleCase(this.form)">Toggle Case<br/> 
     </form> 
     </body> 
    </html> 
+0

javascript不是java,使用正确的标记 – Jimmt 2013-02-18 20:04:32

+0

您在循环中多次调用'document.getElementById(“input”)'多次获得性能命中。 – jbabey 2013-02-18 20:08:37

+0

你错过了每个地方的分号! – Birla 2013-02-18 20:10:34

回答

0

也许你应该看看一些API和HOWTO文档,但这里是你的代码:

<html> 
<head> 
<script type="text/javascript"> 
function toggleCase() { 
    var text = document.getElementById("input").value; 
    var character = new Array(text.length); 

    for (i=0, a = text.length; i < a; i++) { 
    character[i] = text[i]; 
    if (character[i] == character[i].toUpperCase){ 
     character[i] = character[i].toLowerCase(); 
    } 
    else { 
     character[i] = character[i].toUpperCase(); 
    } 
    } 

    document.getElementById("output").value = character.join(''); 
} 
</script> 
</head> 
<body> 
<p>Enter letters for conversion:</p> 
<form> 
<input type="text" name="input" id="input" value="sample" maxlength="10"><br /> 
<input type="text" name="output" id="output" value="" /> <br/> 
<input type="checkbox" name="toggle" value="ToggleCase" onClick="toggleCase()">Toggle Case<br/> 
</form> 
</body> 
</html> 
0
function toggleCase() { 
    var str = document.getElementById("input").value; 
    for (var i=0; i<str.length; i++) { 
    str[i] = (str[i]==str[i].toUpperCase() ? str[i].toLowerCase() : str[i].toUpperCase()); 
    } 
    document.getElementById("output").value = str; 
} 

这是一个for循环,没有工作。并记住.toUpperCase.toLowerCase是函数

0

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

var str = 'foo bar baz'; 

将字符串转换为char数组最简单的方法是将空字符串传入split方法。

var charArray = str.split(''): 
// charArray === ['f','o','o' ... 'b','a','z']; 

另外一个FYI,传递一个空格字符到分裂将给你一个单词阵列。

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; 

哦,因为你是初学者还有另一个FYI。确保你知道使用浏览器的控制台。

如果你在Firefox上,抓住萤火虫应用程序。

Chrome,请按Ctrl-Shift-C。

IE也有一个,我只是不在乎使用它。

控制台使得用JS进行试验变得更容易,然后与制作HTML演示页面相比,并假设代码正常工作。

另外,这些开发人员工具可以显示对象的基础方法。它为学习JS提供了一个绝佳的方法。