1

http://www.juriseodesign.com/clock/Sydney.php

我的时钟计数 javascript 显示错误。我有我的背景更改工作,但在添加计数时钟 javascript 后,时钟不起作用。我猜这是由 Mootools 和常规 jQuery 的“冲突”引起的,但我不知道如何修复它。有人可以帮我吗?另外,当我单击下拉菜单中的城市之一时,如何连接到其他页面?

太感谢了!

// JavaScript 文档

//initial time
var h_current = -1;
var m1_current = -1;
var m2_current = -1;
var s1_current = -1;
var s2_current= -1;


function flip (upperId, lowerId, changeNumber, pathUpper, pathLower){
    var upperBackId = upperId+"Back";
    $(upperId).src = $(upperBackId).src;
    $(upperId).setStyle("height", "64px");

Uncaught TypeError: Object # has no method 'setStyle' (repeated 315 times) $(upperId).setStyle("visibility", "visible"); $(upperBackId).src = pathUpper+parseInt(changeNumber)+".png";

    $(lowerId).src = pathLower+parseInt(changeNumber)+".png";
    $(lowerId).setStyle("height", "0px");
    $(lowerId).setStyle("visibility", "visible");

    var flipUpper = new Fx.Tween(upperId, {duration: 200, transition: Fx.Transitions.Sine.easeInOut});
    flipUpper.addEvents({
        'complete': function(){
            var flipLower = new Fx.Tween(lowerId, {duration: 200, transition: Fx.Transitions.Sine.easeInOut});
                flipLower.addEvents({
                    'complete': function(){ 
                        lowerBackId = lowerId+"Back";
                        $(lowerBackId).src = $(lowerId).src;
                        $(lowerId).setStyle("visibility", "hidden");
                        $(upperId).setStyle("visibility", "hidden");
                    }               });                 
                flipLower.start('height', 64);

        }
                        });
    flipUpper.start('height', 0);


}//flip


function retroClock(){

    // get new time
     now = new Date();
     h = now.getHours();
     m1 = now.getMinutes() / 10;
     m2 = now.getMinutes() % 10;
     s1 = now.getSeconds() / 10;
     s2 = now.getSeconds() % 10;
     if(h < 12)
        ap = "AM";
     else{ 
        if( h == 12 )
            ap = "PM";
        else{
            ap = "PM";
            h -= 12; }
     }

     //change pads

     if( h != h_current){
        flip('hoursUp', 'hoursDown', h, 'Single/Up/'+ap+'/', 'Single/Down/'+ap+'/');
        h_current = h;
    }

    if( m2 != m2_current){
        flip('minutesUpRight', 'minutesDownRight', m2, 'Double/Up/Right/', 'Double/Down/Right/');
        m2_current = m2;

        flip('minutesUpLeft', 'minutesDownLeft', m1, 'Double/Up/Left/', 'Double/Down/Left/');
        m1_current = m1;
    }

     if (s2 != s2_current){
        flip('secondsUpRight', 'secondsDownRight', s2, 'Double/Up/Right/', 'Double/Down/Right/');
        s2_current = s2;

        flip('secondsUpLeft', 'secondsDownLeft', s1, 'Double/Up/Left/', 'Double/Down/Left/');
        s1_current = s1;
    }





}

setInterval('retroClock()', 1000);
4

3 回答 3

1

我只是查看了 jQuery 参考,setStyle 方法不存在。您应该改用css方法:

$(upperId).css('height','64px;');

查看这段代码,有很多东西与 jQuery 方法不匹配。

例如:如果你想将src属性更改为upperId元素,在 jQuery 中你应该使用attr方法:

// $(upperId).src = $(upperBackId).src;  // WRONG
$(upperId).attr('src', $(upperBackId).attr('src'));   // CORRECT

如果要引用带有 id 的元素,则必须#在元素 id 之前添加:

var upperBackId = "#" + upperId + "Back";
于 2012-12-09T22:02:17.427 回答
0

像其他人建议你应该使用 $(..).css( ...) 函数,因为 setStyle 在 jQuery 中不存在。

我通常也更喜欢使用 $(...).hide() 和 $(...).show() 而不是 $(...).css("visibility","hidden") 或 $(. ..).css("visibility","visible") 因为“visibility”仍然占用空间并且与将 opacity 设置为 0 相同 - 如果我隐藏元素,我不希望它使用任何空间...

于 2012-12-09T22:13:44.607 回答
0

您尝试将 Mootools 方法与 jQuery 一起使用。jQuery 中没有 setStyle() 方法。

于 2012-12-09T22:05:32.193 回答