2016-11-16 25 views
0

私はオブジェクトブロック内で定義した関数を呼び出そうとしていますが、選択フィールドの値が変更されたときにのみ呼び出されます。 studentを考慮Javascript "Uncaught TypeError:オブジェクトが関数ではありません"

var student = { 
 
    role: function() { 
 
    var studRole = document.getElementById("student"); 
 
    var roleStud = studRole.options[studRole.selectedIndex].value; 
 
    switch (roleStud) { 
 
     case 'Admin': 
 
     alert("Welcome Admin"); 
 
     break; 
 
     default: 
 
    } 
 
    } 
 
}
<form> 
 
    <select id="countries" onchange="test()"> 
 
    <option value="France">France</option> 
 
    <option value="Nigeria">Nigeria</option> 
 
    </select> 
 
    <br/>Student Role: 
 
    <select id="student" onchange="student.role()"> 
 
    <option value="user">User</option> 
 
    <option value="Admin">Admin</option> 
 
    </select> 
 
</form>

Fiddle Demo

+0

このエラーはどの回線で発生しますか?デバッガでコードをトレースすると、 'studRole'の値は何ですか? –

+0

ほとんどの場合、学生対象の範囲に問題がありますか?どこで定義しましたか? –

+5

あなたは 'student'という名前のHTML要素と' student'という名前のオブジェクトで矛盾したIDを持っています。 HTML IDはグローバルオブジェクトに格納されます。 –

答えて

1

あなたはwindow.student.role()

var student = { 
 
      role: function() { 
 

 
       var studRole = document.getElementById("student"); 
 
       var roleStud = studRole.options[studRole.selectedIndex].value; 
 

 
       switch (roleStud) { 
 
        case 'Admin': 
 
         alert("Welcome Admin"); 
 
         break; 
 
        default: 
 
        } 
 
        } 
 
       }
<form> 
 
     <select id="countries" onchange="test()"> 
 
      <option value="France">France</option> 
 
      <option value="Nigeria" >Nigeria</option> 
 
     </select><br/> 
 
     Student Role: 
 
     <select id="student" onchange="window.student.role()"> 
 
      <option value="user">User</option> 
 
      <option value="Admin" >Admin</option> 
 
     </select> 
 
</form>
0123のように、それを参照することができ、 window範囲であります

+0

なぜそれをする必要がありますか? –

0

あなたはfirst.Youはスクリプトで定義されていない「テスト」機能を呼び出しているあなたの関数を定義してくださいあなたはstring

<form> 
     <select id="countries" onchange="test()"> 
      <option value="France">France</option> 
      <option value="Nigeria" >Nigeria</option> 
     </select><br/> 
     Student Role: 
     <select id="student" onchange="CheckRole()"> 
      <option value="user">User</option> 
      <option value="Admin" >Admin</option> 
     </select> 
</form> 
    <script> 
var student = { 
      role: function() { 

       var studRole = document.getElementById("student"); 
       var roleStud = studRole.options[studRole.selectedIndex].value; 

       switch (roleStud) { 
        case 'Admin': 
         alert("Welcome Admin"); 
         break; 
        default: 
        } 
        } 
} 
function CheckRole() { 
    student.role(); 
} 
0

でそれを呼び出しているobjectfunctionを呼び出す必要があります。

<!DOCTYPE html> 
<html> 
<head> 
<style> 
table, td, th { 
border: 1px solid black; 
} 

table { 
    border-collapse: collapse; 
    width: 100%; 
} 

th { 
height: 50px; 
} 
</style> 
</head> 
<body> 

<form> 
    <select id="countries" onchange="test()"> 
     <option value="France">France</option> 
     <option value="Nigeria" >Nigeria</option> 
    </select><br/> 
    Student Role: 
    <select id="student" onchange="window.student.role()"> 
     <option value="user">User</option> 
     <option value="Admin" >Admin</option> 
    </select> 
    </form> 
    <script> 

function test(){ 
var student = { 
      role: function() { 

      var studRole = document.getElementById("student"); 
      var roleStud = studRole.options[studRole.selectedIndex].value; 

      switch (roleStud) { 
       case 'Admin': 
        alert("Welcome Admin"); 
        break; 
       default: 
       } 
       } 
      } 
} 
</script> 
</body> 
</html> 
関連する問題