我想为一组不断变化的特定字符循环数组。从那以后我想切换字母的情况,我被告知使用这个特定的代码,但我无法让它工作。代码必须遍历一个字符数组,其中字符来自“输入”文本框。我该如何解决这个问题?
我应该提一下,我是在高中上课时这样做的,所以我不会在编码方面接近完美。
<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 :(得分:0)
也许你应该看看一些api和howtos,但这是你的代码:
<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>
答案 1 :(得分: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
是函数
答案 2 :(得分:0)
您可能需要查看String的split方法。
var str = 'foo bar baz';
将字符串转换为char数组的最简单方法是将空字符串传递给split方法。
var charArray = str.split(''):
// charArray === ['f','o','o' ... 'b','a','z'];
同样是一个FYI,将空格字符传递给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;
哦,因为你是初学者,所以另一个FYI。确保您知道使用浏览器的控制台。
如果你使用的是Firefox,请抓住firebug应用程序。
Chrome,按Ctrl-Shift-C。
IE也有一个,我只是不在乎使用它。
与制作html演示页面并假设代码正常工作相比,控制台可以更轻松地使用JS进行实验。
另外,这些开发人员工具可以向您展示对象的基础方法。它是学习JS的一种快捷方式。