变量undefined使用jquery;可能的格式冲突

时间:2016-07-22 12:47:48

标签: jquery coldfusion-10

需要一些帮助。看起来很简单但我必须遗漏一些东西。我正在尝试在单击锚标记时检索一些id值。出于某种原因,我没有得到所有的价值观。我认为与数据格式存在冲突。这是代码

jquery的

已编辑以反映Jai的推荐 - 同样的结果

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

所以...控制台显示html中的所有三个id,但#scheduleWarning html输出没有显示&#34; times&#34; var值。它说它是 undefined

变量#x#是Coldfusion从数据库查询中生成的索引值。产生的一个例子如下。

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

任何想法为什么&#34;时代&#34; var出现 undefined

我的调试结果只是一点点。如果我改变了

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

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

&#34; day&#34; var显示

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

我希望我没有让任何人感到困惑。

1 个答案:

答案 0 :(得分: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>');
  });
});