2014-12-20 159 views
0

写一些非常基本的HTML ..当我尝试点击该按钮没有一切发生的时候..但被记录在我的控制台一个错误speakenglish没有定义 Javascript函数说没声明?

<head> 
    <meta charset="utf-8"> 
    <title>Language Translator</title> 

    <script type='text/javascript'> 
     function speakenglish() { 
      var ddl = document.getElementById("ispeakenglish"); 
      var selectedValue = ddl.options[ddl.selectedIndex].value; 
       if (selectedValue === "selectlanguage") { 
       alert("Please select a answer"); 
       } 
       if (selectedValue === "speakenglishno") { 
       alert("Sorry to partake in our service you will need to be able to speak english"); 
       } 
       if (selectedValue === "speakenglishyes") 
       { 
        location.replace({% static '/page2.html' %}); 
       } 
    } 
    </script> 
</head> 

<body> 
    <h1> Basic Language Translator</h1> 
    <p> A Userbase generated language translator </p> 
    <label class="languespoken" for="ispeakenglish">Do you know English?</label> 
    <select id="cardtype" name="cards"> 
     <option value="selectlanguage">--- Please select ---</option> 
     <option value="speakenglishyes">Yes</option> 
     <option value="speakenglishno">No</option> 
    </select> 

    <input type="button" onclick="speakenglish()" value="Proceed"> 

</body> 

+0

嗨,大家好只是解释({%静止 '了/page2.html' %});它是一个IDE,这就是如何调用其他页面....我可以改变它,但它的事实并不相关......该页面根本没有被调用(因为函数没有运行),如果它被调用并且我肯定会得到一个错误,说这个页面不是有效的,我会将其更改为有效的(当前不存在) – SleepingGod

+0

最佳做法是避免使用内联属性分配函数。给该按钮一个'id =“yourIdName”'属性,并在'body'的底部放置一个相应的函数调用:document.getElementById('yourIdName')。addEventListener 'click',speakenglish,false);' – Makaze

回答

1

试试这个:

<head> 
<meta charset="utf-8"> 
<title>Language Translator</title> 

<script type="text/javascript"> 
    function speakenglish() { 
     var ddl = document.getElementById("cardtype"); 
     var selectedValue = ddl.options[ddl.selectedIndex].value; 
      if (selectedValue === "selectlanguage") { 
      alert("Please select a answer"); 
      } 

      if (selectedValue === "speakenglishno") { 
      alert("Sorry to partake in our service you will need to be able to speak english"); 
      } 
      if (selectedValue === "speakenglishyes") 
      { 
       //location.replace({% static '/page2.html' %}); //change It 
       window.location = 'page2.html'; 
      } 
} 
</script> 
</head> 

<body> 
<h1> Basic Language Translator</h1> 
<p> A Userbase generated language translator </p> 
<label class="languespoken" for="ispeakenglish">Do you know English?</label> 
<select id="cardtype" name="cards"> 
    <option value="selectlanguage">--- Please select ---</option> 
    <option value="speakenglishyes">Yes</option> 
    <option value="speakenglishno">No</option> 
</select> 

<input type="button" onclick="speakenglish()" value="Proceed"> 
</body> 
+0

谢谢,这解决了它...现在我需要弄清楚为什么 – SleepingGod

+0

Downvoter要小心............! – Yash

+0

随时谢谢@sleepingGgod ......你在函数定义的下一行发生了一处错误。看看你的代码。 – Yash

3

变化id

var ddl = document.getElementById("cardtype"); 

因为你在那里的页面没有ID ispeakenglish

你也可以解释一下这段代码的作用location.replace({% static '/page2.html' %});

1

这是因为您没有任何含ispeakenglish id的元素。所以函数有错误。

TypeError: ddl is null 

快速的解决方案将与

var ddl = document.getElementById("cardtype"); 
1

更换

var ddl = document.getElementById("ispeakenglish"); 

在这一行

location.replace({% static '/page2.html' %}); 

你有一个语法错误。因此<script>标记无法解析,并且该函数保持未定义状态。

我不确定,你想在那里做什么,所以我无法修复它。在这种情况下,应该只是一个重定向,你可能想使用:

window.location = '/page2.html'; 
1

你在你的函数声明中有语法错误:

SyntaxError: invalid property id 
location.replace({% static '/page2.html' %}); 

修复它,你的功能将正常工作:)