我有一个充满活动的桌子,我正在尝试获取每小时开启的活动数量。这样就很容易看出并发事件的数量。
要做到这一点,我正在通过表格查找事件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);
}
});
}
答案 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()的函数内的任何命名参数或变量发生冲突。