JavaScript 项目未写入文档

标签 javascript

我在学校刚接触 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)。

您的代码几乎没有问题。

  1. 您在没有必要的情况下使用全局变量,这不是好的做法
  2. 您不会保存用户的所有输入,因此始终保存最后一个字符串,即空字符串,因此实际上您将空字符串发送到其他函数。
  3. 当你在字符串上使用string方法时,它不会改变变量内部的值,它只是创建一个新的值,你需要将它分配给保存该值的变量,以便改变它。
  4. 如果看我的示例,我使用 return 将转换后的字符串的值返回到第一个函数,不需要全局。
  5. 虽然我使用了 document.write ,但这不是一个好的做法,请考虑写入元素 innerHTML/Text

关于JavaScript 项目未写入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45280492/

相关文章:

javascript根据所选值重定向页面

javascript - 如何逐步向一个元素添加 2 个类

javascript - 遍历 Typescript 中的对象数组

javascript - 在硬重新加载页面后删除一些 dom 元素

javascript - 用于检查字符串是否为 a-zA-Z0-9 的正则表达式

javascript - 使用 addDomListener 传递参数以初始化函数

Javascript 从数组中选择数据以创建供图表使用的集合列表

javascript - 有没有办法将 v-for 中的对象属性传递给 Vue 数据?

javascript - 一年后,仍然在单元测试、集成测试和端到端测试中挣扎

javascript - Google Charts 饼图显示其他 100% 而不是实际值