2016-07-22 4 views
2

少しの助けが必要です。かなりシンプルに見えますが、私は何かが欠けているに違いありません。私はアンカータグをクリックするといくつかのID値を取得しようとしています。何らかの理由で私はすべての価値を得ていません。私は、データのフォーマットと矛盾があると考えています。同じ結果変数はjqueryを使用して未定義です。可能な形式の競合

$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> 

そう...コンソールが表示されている - ここでジャイのrecomendationを反映するように編集コード

jqueryの

ですすべての3つのIDは、HTMLからしかし、 #scheduleWarning html出力に「時」のvar値が表示されません。それは、が定義されていないと言っています

変数#x#は、データベースクエリからColdfusionによって生成されたインデックス値です。生産されるものの例は次のとおりです。

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

"回" varが未定義を見せている理由を任意のアイデア?

私のデバッグ結果のちょっとしたおかげです。私は

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

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

を変更した場合は、 "日" VARは、私は誰を混同していない願ってい

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

の正しい値を示しています。

答えて

2

これは、変数巻上げと呼ばれることがあります。任意の変数を宣言すると、javascriptコンパイラによって一番上に上げられます。したがって、その時点では値はundefinedで、設定されていないためです。代わりに、これを行うことができます:

$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

私はあなたがここにコンソールコードで表示したように、コードを試しました。コンソールコードを追加すると、コンソールに表示されます。私はまだ未定義になっています。 –

+0

"\t = $ j("#scheduleTime ")。val();"を変更すると、 to "times \t = $ j("#scheduleID ")。val();" "times" varはidを正しく示しています。時間の書式設定には何か問題があります。それはコンソールに表示されますが、まだ "未定義"と表示されます。 –

関連する問題