Javascript 起初它说这不是一个功能,现在它什么都不做

Javascript 起初它说这不是一个功能,现在它什么都不做,javascript,jquery,function,Javascript,Jquery,Function,好吧,我正在尝试制作一个俗气的口音生成器来练习正则表达式。但我有一个奇怪的问题,似乎与正则表达式无关。“提交”按钮不起任何作用。一开始,函数“maccent”只是被称为“accent”,当时控制台说“accent”不是一个函数。由于没有更好的办法,我认为这是因为“重音”这个词被多次使用,所以我将函数名改为“maccent”。然而,现在什么也没发生。怎么回事?这是我的密码: <!DOCTYPE html> <html lang="en-us"> <head> &

好吧,我正在尝试制作一个俗气的口音生成器来练习正则表达式。但我有一个奇怪的问题,似乎与正则表达式无关。“提交”按钮不起任何作用。一开始,函数“maccent”只是被称为“accent”,当时控制台说“accent”不是一个函数。由于没有更好的办法,我认为这是因为“重音”这个词被多次使用,所以我将函数名改为“maccent”。然而,现在什么也没发生。怎么回事?这是我的密码:

<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Accent Generator</title>
<script 
src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"> 
</script>


</head>
<body>
  <p>Choose an accent</p>
  <input type = "text">

  <form action="">
  <input type="radio" name="accent" value="German"> German<br>
  <input type="radio" name="accent" value="English"> English<br>
  <input type="radio" name="accent" value="Indian"> Indian
</form>

  <button type="submit" onclick = "maccent()">Submit</button>
  <div id = "accented"></div>


<script>

    var accent = $('input[name="accent"]:checked').val();



  function maccent()
  {
    if (accent == "German")
    {
      germAcc();
    }
  }

    function germAcc()
    {
var sample = $("input").val()


var desire = sample.replace(/[w]/gi, "v")
//not if it's at the end of a word

var desire2 = desire.replace(/th/, "z")
//replace h too, but not with another z.
//wait, what?  It replaces t even if its not followed by h

var desire3 = desire2.replace(/er/, "a")
//this is going to be a hard one
//er is replaced with a but only if its followed by a space or a punctuation 
mark.
console.log(desire3);

}

function indAcc()
{
var sample = $("input").val()


var desire = sample.replace(/[r]/gi, "d")
//not if it's at the end of a word


//this words, but not on each indivual word

console.log(desire);

}

function itAcc()
{

}

function britAcc()
{
  var sample = $("input").val();


var desire = sample.replace(/[a]/gi, "au")

var desire2 = desire.replace(/er/, "a")
//this is going to be a hard one

console.log(desire2);


//not if it's at the end of a word
}




  </script>

  </body>
</html>

重音发生器
选择口音

德语
英语
印度的 提交 var accent=$('input[name=“accent”]:checked').val(); 函数maccent() { 如果(重音=“德语”) { germAcc(); } } 函数germAcc() { var sample=$(“输入”).val() var desire=样本。替换(/[w]/gi,“v”) //如果是在一个词的结尾就不会了 var desire2=desire.replace(/th/,“z”) //也替换h,但不能用另一个z。 //等等,什么?即使后面没有h,它也会替换t var desire3=desire2.替换(/er/,“a”) //这将是一个艰难的时刻 //er被替换为a,但前提是其后跟空格或标点符号 做记号 console.log(desire3); } 函数indAcc() { var sample=$(“输入”).val() var desire=样本。替换(/[r]/gi,“d”) //如果是在一个词的结尾就不会了 //这个词,但不是每个独立的词 console.log(desire); } 函数itAcc() { } 函数britAcc() { var sample=$(“输入”).val(); var desire=sample.replace(/[a]/gi,“au”) var desire2=desire.replace(/er/,“a”) //这将是一个艰难的时刻 console.log(desire2); //如果是在一个词的结尾就不会了 }
问题在于“变量”
重音的赋值。您是在全局范围(顶层)中执行此操作的,因此在第一次加载页面时会分配它

如果将该赋值移到函数
maccent()
(并将工作“标记”移回其所属的注释中),则页面将正常工作


顺便提一下,旧问题是您有一个函数和一个变量试图共享名称
重音
。变量“获胜”。

问题在于“变量”
重音的赋值。您是在全局范围(顶层)中执行此操作的,因此在第一次加载页面时会分配它

如果将该赋值移到函数
maccent()
(并将工作“标记”移回其所属的注释中),则页面将正常工作


顺便提一下,旧问题是您有一个函数和一个变量试图共享名称
重音
。变量是“winning”。

对于初学者来说,
var-accent=$('input[name=“accent”]:checked').val()将不为重音分配任何内容,因为在页面加载时没有选择任何单选按钮。您需要将其移动到
maccent
内部,以便在按下按钮后读取选中的单选按钮值将不为重音分配任何内容,因为在页面加载时没有选择任何单选按钮。您需要将其移动到maccent内部,以便在按下按钮后读取选中的单选按钮值。