2016-07-22 12 views
2

Benötigen Sie ein wenig Hilfe mit diesem. Scheint ziemlich einfach, aber ich muss etwas verpassen. Ich versuche, einige ID-Werte abzurufen, wenn ich auf ein Anker-Tag klicke. Aus irgendeinem Grund bekomme ich nicht alle Werte. Ich denke, es gibt einen Konflikt mit dem Format der Daten. Hier ist der CodeVariable undefiniert mit jQuery; möglicher Formatkonflikt

jquery

EDITED zu Jais recomendation zu reflektieren - gleiche Ergebnisse

$j(document).ready(function() { 

    // find value of id and name 
    $j(".dig").on("click", function(e) { 
     var scheduleID = ($j(this).attr('id')); 
      console.log(scheduleID); 
     var scheduleTime = ($j(this).closest("div").attr('id')); 
      console.log(scheduleTime); 
     var scheduleDay = ($j(this).closest("li").attr('id')); 
      console.log(scheduleDay); 
     var day, times; 
     $j("#show-form").dialog("open"); 
     $j("#scheduleID").val(scheduleID); 
     $j("#scheduleTime").val(scheduleTime);   
     $j("#scheduleDay").val(scheduleDay); 
      day  = $j("#scheduleDay").val(); 
      times = $j("#scheduleTime").val(); 
     $j('#scheduleWarning').html('<p>NOTE: if you upload an MP3 file for your episode below, it will be put into the ' + day + ' ' + times + ' programming slot. Be sure to select ' + day + ' ' + times + ' to sync this episode with your audio file</p>'); 
    }); 

html

<li id="Monday"> 
    <div id="#x#:00" class="time"> 
     <a id="#ID#" class="icon icon-primary material-icons-backup icon-sm icon-backup dig" style="cursor:pointer" title="upload show"></a>&nbsp;&nbsp;&nbsp;Monday #x#:00 
    </div> 
</li> 

So ... die Konsole zeigt alle drei ids von der html aber die #scheduleWarning HTML-Ausgabe zeigt nicht den "Zeit" Var-Wert. Es heißt es ist undefined.

Die Variable # x # ist ein Indexwert, der von Coldfusion aus einer Datenbankabfrage erzeugt wird. Ein Beispiel für das, was produziert wird, ist wie folgt.

<div id="21:00" class="time"> 

Jede Idee, warum die "Zeit" var undefined wird angezeigt?

Nur ein kleiner Leckerbissen meiner Debugging-Ergebnisse. WENN ICH

$j("#scheduleDay").val(scheduleDay); 

zu

$j("#scheduleDay").val(scheduleTime); 

der "Tag" var ändern zeigt den richtigen Wert des

var scheduleTime = ($j(this).closest("div").attr('id')); 

Ich hoffe, dass ich niemanden verwirren haben.

Antwort

2

Das nennt man Variable hissen. Wenn Sie eine Variable deklarieren, wird sie oben vom Javascript Compiler gehisst. Zu diesem Zeitpunkt ist der Wert undefined, weil er nicht gesetzt ist. Stattdessen können Sie dies tun:

$j(document).ready(function() { 
    // find value of id and name 
    $j(".dig").on("click", function(e) { 
    var scheduleID = ($j(this).attr('id')); 
    var scheduleTime = ($j(this).closest("div").attr('id')); 
    var scheduleDay = ($j(this).closest("li").attr('id')); 
    var day, times; // <--------------------------------declare it here. 

    $j("#show-form").dialog("open"); 
    $j("#scheduleID").val(scheduleID); 
    $j("#scheduleTime").val(scheduleTime); 
    $j("#scheduleDay").val(scheduleDay); 
    day = $j("#scheduleDay").val(); 
    times = $j("#scheduleTime").val(); 
    $j('#scheduleWarning').html('<p>NOTE: if you upload an MP3 file for your episode below, it will be put into the ' + day + ' ' + times + ' programming slot. Be sure to select ' + day + ' ' + times + ' to sync this episode with your audio file</p>'); 
    }); 
}); 
+0

Ich habe versucht, den Code, wie Sie hier mit dem Konsolencode und ohne angezeigt haben. Wenn Konsolencode hinzugefügt wird, sehe ich es in der Konsole. Ich werde immer noch undefiniert. –

+0

Wenn ich ändere "mal \t = $ j (" # scheduleTime "). Val();" zu "mal \t = $ j (" # scheduleID "). val();" Die "Times" var zeigt die ID korrekt an. Mit der Formatierung der Uhrzeit muss etwas nicht stimmen. Es erscheint in der Konsole, zeigt aber immer noch "undefined". –