2

我编写了一个 javascript,用于使用下拉选择菜单更改我网站上某个字段的“时区”。

你可以在这里看到脚本:http: //jsfiddle.net/dTb76/14/

但是,我已经达到了我知道如何做的极限 - 我需要脚本来修改几个“时间”字段,但是,目前它只能与一个字段一起使用。

几天来,我一直试图弄清楚要进行哪些更改,但是我运气不佳。我能说的最好的,我需要某种“foreach”语句,告诉它存储每个字段的原始时间,然后通过选择中选择的任何内容对其进行修改,但是我不确定如何在 jQuery/javascript 中实现它.

非常感谢帮助。

4

2 回答 2

1

您将希望使用 jQuery 的each()方法来遍历您的每个.time元素。这将允许您获取每个特定元素的当前时间并在每个元素的基础上进行计算;否则,$('.time').text()类似的事情将始终返回所选第一个元素的值,这就是您所看到的。

这应该让你开始:

    $('#modTime').change(
        function(){

        var modifyBy = parseInt($(this).val(),10);  // Here, this refers to your select element, the element whose change event handler we're now in

        $('.time').each(function(){ // each() iterates through each .time element found in the DOM individually; that's what you'd like to do
            var $this = $(this), // Refers to the current .time element
                curTime = $this.text(),
                curTimeHH = parseInt(curTime.split(':')[0],10),
                curTimeHH = parseInt(curTime,10) + modifyBy;                

            $this.attr('originalTime',curTime);
            if (curTimeHH == 0) {
                $this.text('24:00');
            } else if (curTimeHH > 24) { 
                 curTimeHH = curTimeHH - 24;
                 $this.text('0'+curTimeHH + ':00');
            } else if (curTimeHH < 0) {
                curTimeHH = curTimeHH + 24;
                $this.text(curTimeHH + ':00');
            } else { 
            $this.text(curTimeHH + ':00');
             }                    
        });            
    });
于 2012-05-23T13:46:07.983 回答
1

您只需要使用$.each JQuery 函数

$('#modTime').change(function() {

    var times = $('.time');

    $.each(times, function(index, value) {

        var curTime = $(value).text();

        curTimeHH = parseInt(curTime.split(':')[0],10);

        $(value).attr('originalTime', curTime);

        var modifyBy = parseInt($('#modTime').val(),10);

        curTimeHH = parseInt(curTime,10) + modifyBy;

        if (curTimeHH === 0) {
            $(value).text('24:00');
        } else if (curTimeHH > 24) { 
            curTimeHH = curTimeHH - 24;
            $(value).text('0'+curTimeHH + ':00');
        } else if (curTimeHH < 0) {
            curTimeHH = curTimeHH + 24;
            $(value).text(curTimeHH + ':00');
        } else { 
            $(value).text(curTimeHH + ':00');
        }                
    });        
});​

编辑:

要检索每个字段的“原始时间”,您可以执行以下操作:

    var times = $('.time');

    $.each(times, function(index, value) {

        var originalTime = $(value).attr('originalTime');
        ...
    });     
于 2012-05-23T13:46:23.607 回答