我在学校刚接触 JavaScript,这个项目没有达到我想要的效果。 (这就是这些帖子的首要原因,对吗?)
目标是让用户在名为 startMeUp() 的函数中一次输入一个单词并进行提示,然后当用户输入空字符串时停止提示。 (该部分有效)
然后应该引用一个函数“processString”,该函数将输入的字符串转换为数组,检查数组中每个单词的长度,如果< 4个字母则将其转为大写,如果>= 4则将其转为小写。
最后,它应该“将转换后的字符串返回到调用函数startMeUp中的变量,并使用document.write显示该值”
我以为我做得正确,但没有任何内容写入页面,所以我不确定我哪里出了问题。我已包含以下代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Exercise 2</title>
<script language="JavaScript" type="text/JavaScript">
//************************
// Main start-up function
// Invoked from the onload event
var someInput;
var someArray;
var someFinalString;
function startMeUp() {
do{
someInput = prompt("Enter a word");
}
while(someInput.length > 0);
processString(someInput);
document.write(someFinalString);
}
function processString(someInput){
//split the input string into a JavaScript array
someArray = someInput.split(" ");
//use a for loop to examine every word
for(i = 0; someArray[x]; i++)
{
if(someArray[i].length < 4)
{
someArray[i].toUpperCase();
}
if(someArray[i].length >= 4)
{
someArray[i].toLowerCase();
}
someFinalString = someArray.join(" ");
}
}
</script>
</head>
<body onload="startMeUp();">
</body>
</html>
最佳答案
这是欲望行为的一个有效示例。
function start() {
var input = "";
var str = "";
do {
input = prompt("Enter a word");
str += input + " ";
} while (input);
document.write(proccessStr(str));
}
function proccessStr (str) {
var arr = str.split(" ");
for (var i = 0; i < arr.length; i++) {
if (arr[i].length < 4)
arr[i] = arr[i].toUpperCase();
else
arr[i] = arr[i].toLowerCase();
}
return arr.join(" ");
}
start();
代码笔:https://codepen.io/anon/pen/qXByby (jsfiddle 不支持 docuent.write
)。
您的代码几乎没有问题。
- 您在没有必要的情况下使用全局变量,这不是好的做法
- 您不会保存用户的所有输入,因此始终保存最后一个字符串,即空字符串,因此实际上您将空字符串发送到其他函数。
- 当你在字符串上使用
string
方法时,它不会改变变量内部的值,它只是创建一个新的值,你需要将它分配给保存该值的变量,以便改变它。 - 如果看我的示例,我使用
return
将转换后的字符串的值返回到第一个函数,不需要全局。 - 虽然我使用了
document.write
,但这不是一个好的做法,请考虑写入元素innerHTML/Text
关于JavaScript 项目未写入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45280492/