2017-01-26 3 views
0

Ich hatte Probleme mit meiner globalen Variable hoffe, Sie können mir helfen.Globale Variable in JavaScript Ergebnis ist immer undefine

<li> 
<a href="<?php echo site_url("adminController/questionAdd/".$row->subjectid); ?>" id="<?php echo $row->subjectid; ?>" class="subject">Add Question</a> 
</li> 

nun von dieser Linie ich meine ID von click() in dieser Linie bestehen in Javascript

$(document).ready(function() { 
     var correctAnswer; 
     var subId; 

     $(".subject").click(function() { 
      subId = ($(this).attr('id')); //passed the id variable into the global variable 
      alert(subId) // when I alert this it returns the value 
     }); 

jetzt habe ich die globale Variable in dieser Zeile die gleiche $ (document) .ready (function()

$('#form-user').submit(function(e){ 
       e.preventDefault(); 

       var me = $(this); 
       var correct = correctAnswer; 
       var passedSubId = subId; // passed the global variable to this local variable 
       console.log(correct); // this is okey 
       console.log(subId); // this is undefined 
}); 

Ergebnis

i 
undefined 
+0

hinwollen Haben Sie Ihr Dokument bereit und das Formular korrekt ausgefüllt? –

+0

Vielen Dank für Ihre Antwort. Ja, ich habe es richtig geschlossen. –

Antwort

0

Ihr Code wird nie funktionieren, wie Sie denken, es wird.

Was Sie dort tun Ich denke, Sie klicken auf Ihren Link, der Sie dann von Seite A zu Seite B bewegt, und Sie möchten die Variable verwenden, die Sie auf Seite A auf Seite B eingestellt haben, tut dies aber funktioniert nie, wenn Sie Ihre Seite aktualisieren, wird Ihr gesamtes Skript erneut ausgeführt und es weiß nicht, was Sie auf der vorherigen Seite getan haben. Sie würden haben, entweder, dass die ID aus der URL zu nehmen (es gibt) oder lagern Sie es zum Beispiel in local storage, versuchen Sie dies:

$(document).ready(function() { 
    var correctAnswer; 
    var subId; 

    $(".subject").click(function() { 
     subId = ($(this).attr('id')); //passed the id variable into the global variable 
     alert(subId) // when I alert this it returns the value 
     localStorage.setItem('subId', subId); 
     console.log('id stored'); 
    }); 

    $('#form-user').submit(function(e){ 
      e.preventDefault(); 

      var me = $(this); 
      var correct = correctAnswer; 
      var passedSubId = subId; // passed the global variable to this local variable 
      console.log(correct); // this is okey 
      console.log(subId); // this is undefined 

      storedSubId = localStorage.getItem('subId'); 
      alert(storedSubId); 
      console.log('stored id'); 
    }); 
}); 

jeden Fall ist es von url bekommen ist definitiv der Weg Sie

+1

Vielen Dank für Ihre Antwort Herr, es ist genau das Problem meines Codes. Ich repariere es schon letzte Woche. aber ich schätze deine Antwort sehr. vielen Dank. –

1

Sie können window verwenden, um eine globale Variable zu deklarieren, obwohl sie nicht zu verwenden ist.

Sie können eine globale Variable wie folgt erklären:

window.yourVariable = "something"; 
+0

danke für deine antwort, aber ich habe es versucht, es funktioniert nicht. –

+0

@JohnHora Haben Sie an der Stelle, an der Sie die Warnung erstellen, 'window_Id = subId' versucht? –

+0

Das Problem, wenn ich meine globale Variable in 'windows.Id' deklariere, wird es zu 'Uncaught ReferenceError: subId ist nicht definiert'. –