2017-02-16 5 views
1

var ViewId = $("#txt").val(); - Ich bekomme Wert von einem Textfeld. Und die ID ist txt. Der eingegebene Wert wird jedoch nicht an Funktionen übergeben. Es wird nur der Wert "" übergeben. Und ich füge eine Nummer für das Textfeld hinzu. Wenn es alle drei Funktionen nacheinander hinzufügt, funktioniert es. Aber wenn es als global erklärt wird, funktioniert es nicht.Warum übergeben Sie die globalen Variablenwerte nicht an Funktionen?

var ViewId = $("#txt").val(); 

    $("#btn2").click(function() { 
     var msg = { "Message011": $("#txt1").val() } 

     tv.login().done(function() { 
      tv.createRecord(ViewId, msg).done(function() { 
       alert("Data Added"); 
      }) 
     }) 
    }) 
+2

können Sie bitte auch Ihren HTML-Code hinzufügen. Es ist schwer zu sagen, ob es nur einen Wert gibt oder ob sonst ein Fehler vorliegt. – thesublimeobject

+0

Verschieben Sie 'var ViewId = $ (" # txt ") .val();' in den 'click' Event-Handler. – Tushar

Antwort

0

wie diese versuchen: mit der Funktion Übernehmen innerhalb des Klick und erklären die Variable als globel

Warum nicht funktioniert?

Da globale Variable einig Funktion .its nicht mit enthält string.SO ihrem Dokument bereit Zustand haben das Datum variable.It einige Maßnahmen müssen zur Speicherung der Daten auf die Variable zu speichern.

var ViewId ="" 
     $("#btn2").click(function() { 
     ViewId = $("#txt").val(); 
     var msg = { "Message011": $("#txt1").val() } 
      tv.login().done(function() { 
      tv.createRecord(ViewId, msg).done(function() { 
       alert("Data Added"); 
       }) 
      }) 
     }) 
+0

Got it. Vielen Dank –

1

Ruft den Wert von viewid innerhalb des Klickereignisses ab. Sonst wird es undefined dauern, wenn du es draußen bekommst.

$("#btn2").click(function() { 
    var ViewId = $("#txt").val(); 
    var msg = { "Message011": $("#txt1").val() } 

    tv.login().done(function() { 

     tv.createRecord(ViewId, msg).done(function() { 

      alert("Data Added"); 


     }) 
    }) 
}) 
+0

OP sagt, dass sie eine leere Zeichenfolge bekommen, nicht undefiniert, aber das wäre vermutlich, weil sie den Wert von der ersten Seite der Seite bezieht und nicht den Wert zum Zeitpunkt des Klicks, also verschiebt die '.val() 'Anruf ist die richtige Lösung. – nnnnnn

+0

Es ist gearbeitet. Danke :) –

+0

akzeptieren Sie die Antwort bro –

0

Erklären Sie Ihre Variable in der globalen Rahmen.

var ViewId =""; 
    jQuery(function(){ 
    $("#btn2").click(function() { 
     ViewId = $("#txt").val(); 
     var msg = { "Message011": $("#txt1").val() } 
      tv.login().done(function() { 
      tv.createRecord(ViewId, msg).done(function() { 
       alert("Data Added"); 
       }) 
      }) 
     }); 
    }); 
+0

In dem angezeigten Code wird 'ViewId' nur einmal gelesen und kann daher lokal im Click-Handler deklariert werden. – nnnnnn

+0

Gelöst. Vielen Dank. :) –

Verwandte Themen