简体   繁体   English

如何从textarea获取输入到javascript函数?

[英]How to get input from textarea to javascript function?

I'm trying to create a pig latin translator that takes input from a textarea and sends it to my javascript function for translation. 我正在尝试创建一个猪拉丁翻译器,从文本区域获取输入并将其发送到我的javascript函数进行翻译。 I hit the submit button and nothing happens when I try it out. 我点击了提交按钮,尝试时什么也没有发生。

Here is my javascript code: 这是我的JavaScript代码:

 function translate(String sentence) { String sentence = document.getElementById("sentence").value; int wordStart = -1; int wordEnd = -1; String letter; String fullSentence; for (int i = 0; i < sentence.length(); i++) { String trans; char c = Character.toLowerCase(sentence.charAt(i)) if (wordStart === -1 && (c !== ' ' || c !== '.' || c !== ',' || c !== '!' || c !== '?')) { wordStart = i; letter = c; } if (wordEnd === -1 && (c === ' ' || c === '.' || c === ',' || c === '!' || c === '?' || i === sentence.length() - 1)) { wordEnd = i; } if (wordStart !== -1 && wordEnd !== -1 && (letter !== 'a' || letter !== 'e' || letter !== 'i' || letter !== 'o' || letter !== 'u')) { trans = sentence.subString(wordStart + 1, wordEnd) + letter + "ay"; wordStart = -1; wordEnd = -1; } if (wordStart !== -1 && wordEnd !== -1 && (letter === 'a' || letter === 'e' || letter === 'i' || letter === 'o' || letter === 'u')) { trans = sentence.subString(wordStart, wordEnd) + "way"; wordStart = -1; wordEnd = -1; } fullSentence = fullSentence + trans + " "; } document.getElementById("output").innerHTML = fullSentence; } 
 <div style="font-size: 25pt; text-align: center">Pig Latin Translator</div><br /><br /> <div style="font-size: 15pt; text-align: center"> Enter text to be translated: <form id="piglatin" action=""> <textarea id="sentence" rows="5" cols="30"></textarea><br /> <input type="button" name="submit" value="Submit" onclick="translate('sentence')" /> </form> </div> <div id="output"></div> 

Basically I'm not sure if the problem lies where I'm trying to send the info to my JS function, or if the problem is IN the JS function. 基本上,我不确定问题是否出在试图将信息发送到JS函数的地方,还是问题出在JS函数中。

Open the Developer Tools in your browser. 在浏览器中打开开发人员工具。 Look at the Console. 查看控制台。 You will see numerous error messages. 您将看到许多错误消息。

You appear to be writing Java, but JavaScript is a completely different programming language with little more in common with Java than Carpet does with Car. 您似乎在写Java,但是JavaScript是一种完全不同的编程语言,与Carpet在Car上相比,Java的共同点几乎没有。

The question you ask in the title is one of the things you actually got correct: document.getElementById("sentence").value; 您在标题中提出的问题是您实际上正确的事情之一: document.getElementById("sentence").value;

MDN has some introductory JavaScript tutorials . MDN有一些JavaScript入门教程 You need to learn that language and not just write Java. 您需要学习该语言,而不仅仅是编写Java。

Your code is Java, not javascript. 您的代码是Java,而不是javascript。

The code can be rewritten for example like this (syntactically speaking). 例如,可以这样重写代码(从语法上来说)。 I'm affraid, it does not do what you expect it to do, but it works and the browser understands it. 我很害怕,它没有达到您的期望,但它可以正常工作,并且浏览器可以理解。

function translate() {

  var sentence = document.getElementById("sentence").value;
  var wordStart = -1;
  var wordEnd = -1;
  var letter;

  var fullSentence;
  for (var i = 0; i < sentence.length; i++) {
    var trans;
    var c = sentence.charAt(i).toLowerCase();

    if (wordStart === -1 && (c !== ' ' || c !== '.' || c !== ',' || c !== '!' || c !== '?')) {
      wordStart = i;
      letter = c;
    }

    if (wordEnd === -1 && (c === ' ' || c === '.' || c === ',' || c === '!' || c === '?' || i === sentence.length - 1)) {
      wordEnd = i;
    }

    if (wordStart !== -1 && wordEnd !== -1 && (letter !== 'a' || letter !== 'e' || letter !== 'i' || letter !== 'o' || letter !== 'u')) {
      trans = sentence.substring(wordStart + 1, wordEnd) + letter + "ay";

      wordStart = -1;
      wordEnd = -1;
    }

    if (wordStart !== -1 && wordEnd !== -1 && (letter === 'a' || letter === 'e' || letter === 'i' || letter === 'o' || letter === 'u')) {
      trans = sentence.substring(wordStart, wordEnd) + "way";

      wordStart = -1;
      wordEnd = -1;
    }

    fullSentence = fullSentence + trans + " ";
  }

  document.getElementById("output").innerHTML = fullSentence;

}

Looking to some decent JS tutorial as mentioned in other answers would help. 期待其他答案中提到的一些不错的JS教程会有所帮助。

Happy coding 快乐编码

You can experiment with the javascript function for your page fragmet here in JSFidddle I created. 您可以在我创建的JSFidddle中尝试针对您的页面脆弱的javascript函数。

Here is somewhat working code. 这是一些工作代码。 You still need to modify your logic, because your result is not accurate. 您仍然需要修改逻辑,因为您的结果不准确。

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div style="font-size: 25pt; text-align: center">Pig Latin Translator</div> <br /><br /> <div style="font-size: 15pt; text-align: center"> Enter text to be translated: </br> <textarea id="sentence" rows="5" cols="30"></textarea><br /> <button onclick="Translate()">Submit</button> </div> <div id="output"></div> <script type="text/javascript"> function Translate() { var sentence = document.getElementById("sentence").value; var wordStart = -1; var wordEnd = -1; var letter; var fullSentence; for (let i = 0; i < sentence.length; i++) { var trans; var c = sentence.charAt(i).toLowerCase(); if (wordStart === -1 && (c !== " " || c !== "." || c !== "," || c !== "!" || c !== "?")) { wordStart = i; letter = c; } if ( wordEnd === -1 && (c === " " || c === "." || c === "," || c === "!" || c === "?" || i === sentence.length - 1) ) { wordEnd = i; } if ( wordStart !== -1 && wordEnd !== -1 && (letter !== "a" || letter !== "e" || letter !== "i" || letter !== "o" || letter !== "u") ) { trans = sentence.substring(wordStart + 1, wordEnd) + letter + "ay"; wordStart = -1; wordEnd = -1; } if ( wordStart !== -1 && wordEnd !== -1 && (letter === "a" || letter === "e" || letter === "i" || letter === "o" || letter === "u") ) { trans = sentence.substring(wordStart, wordEnd) + "way"; wordStart = -1; wordEnd = -1; } fullSentence = fullSentence + trans + " "; } document.getElementById("output").innerHTML = fullSentence; } </script> </body> </html> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM