javascript / jquery整数成为对象

时间:2010-01-08 21:21:55

标签: jquery string object

我有一个充满活动的桌子,我正在尝试获取每小时开启的活动数量。这样就很容易看出并发事件的数量。

要做到这一点,我正在通过表格查找事件div(位于td内),然后获取开始和持续时间,并将其放入一个单独的div中,然后将它们添加到我去,所以我最终会有'9点,5场比赛',10点,3场比赛......

到目前为止,我认为代码看起来很不错,但我有一个奇怪的问题。我正在传递一个索引,所以我知道正在计算哪个单元格。 第一个警报返回索引号。但是,第二个警报返回[object HTMLDivELEMENT],我不知道为什么会这样。如果我能在.each函数之后得到索引,我认为一切都会正常工作。

代码是这个(为了便于理解而简化了一点)

for(sched=1;sched<8;sched++){
alert(sched);
jQuery('div.event', 'table#events td:nth-child('+sched+')').each(function(sched){
    var start=jQuery(this).data('start');
    var duration=jQuery(this).data('dur');
    var eventId=jQuery(this).attr('id');
    alert(sched);
    for(t=0;t<=duration;t++){
    var thisHour=start+t;

    var numEvents=jQuery('li#hour'+thisHour, 'table#events td.dailyTotals:nth-child('+sched+')').data('count');
    if(numEvents==null){

    numEvents=0;
    }
    numEventsf++;
    jQuery('li#hour'+thisHour, 'table#events td.dailyTotals:nth-child('+sched+')').css('background-color','red');

    jQuery('li#hour'+thisHour,'table#events td.dailyTotals:nth-child('+sched+')').data('count', numEvents);
    jQuery('li#hour'+thisHour,'table#events td.dailyTotals:nth-child('+sched+')').text(numEvents);
    }
    });
}

2 个答案:

答案 0 :(得分:0)

当第二个alert()执行时,名称'sched'指向$ .each()迭代中的当前元素,因为你的回调(发送到$ .each)声明了sched参数。

**已编辑**

这个简化的例子可以帮助我想到你正在寻找...

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>

<ul id="monkey">
  <li><span>xxx</span></li>
  <li><span>yyy</span></li>
  <li><span>zzz</span></li>
</ul>

<script type="text/javascript" charset="utf-8">

for(thisIsANumber=1; thisIsANumber < 4; thisIsANumber++){
    alert(thisIsANumber);
    $("span", $("#monkey li:nth-child(" + thisIsANumber + ")")).each(function(thisIsAnHtmlElement) {
        alert(thisIsANumber);
    });
}
</script>
</body>

</html>

我认为问题的症结在于:你不负责传递给回调函数的参数。你不能选择传递 - 这是由jQuery完成的,它在$ .each()循环的当前位置传递了DOM元素。

但是,您可以引用在$ .each()回调之外定义并由for循环管理的原始'sched'变量。

答案 1 :(得分:0)

我建议您查看$ .each函数的jquery文档。 http://docs.jquery.com/Utilities/jQuery.each。 $ .each()支持使用一个参数传递函数的能力,只有一个值本身或两个参数,一个用于索引,一个用于值。请记住,传递给$ .each()的函数中定义的所有参数都由jquery独占使用,如果你想使用在传递给$ .each()的函数范围之外定义的变量那么你需要确保变量不会与传入$ .each()的函数内的任何命名参数或变量发生冲突。