<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

        明月松間照 清泉石上流


                                            ——— 兵臨城下   貓科動物
    posts - 70, comments - 137, trackbacks - 0, articles - 23
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    又是JS的問題!最近研究中……

    Posted on 2006-08-05 14:48 兵臨城下 閱讀(785) 評論(7)  編輯  收藏 所屬分類: JavaScript

    ?????????最近想實現(xiàn)一個圖片的漸顯漸無的JS程序,就是鼠標移到上面圖片逐漸清晰,鼠標移走圖片逐漸消失。有點問題向大家請教。
    ?????????相關(guān)代碼如下:
    ????????圖片代碼:?<img src="liuting.jpg" width="339" height="450" onmouseover="high(this)" onmouseout="low(this)" style="FILTER: alpha(opacity=15)"/>
    ?????????JS方法:
    ?????????function high(imgHigh){
    ??????????????high = imgHigh;
    ??????????????if(typeof(lowlighting) != "undefined") clearInterval(lowlighting);
    ??????????????highlighting=setInterval("highlightit(high)",100);
    ?????????}

    ?????????function low(imgLow){
    ???????????????low=imgLow;
    ???????????????clearInterval(highlighting);
    ????????????????lowlighting = setInterval("lowLight(low)",100);
    ?????????}

    ?????????function highlightit(img){
    ?????????????if(img.filters.alpha.opacity < 200) {
    ??????????????img.filters.alpha.opacity += 5;
    ?????????????}
    ?????????????//else if (window.highlighting)
    ??????????????//clearInterval(highlighting);
    ?????????}
    ?????????function lowLight(img) {
    ?????????????if(img.filters.alpha.opacity > 15)
    ????????????????????img.filters.alpha.opacity -= 5;
    ?????????????//else if (window.lowlighting)
    ??????????????//clearInterval(lowlighting);
    ?????????}
    ?????????網(wǎng)頁打開后,第一次鼠標移上去漸清晰,移走后也正常逐漸消失,都很正常??僧斘以俅伟咽髽艘频綀D片上時,就沒有反應(yīng)了,在移出圖片時JS報錯,說在<img />那行,對象不支持此屬性或方法。
    ????????調(diào)了好久也沒成功,特來向大家請教!


    評論

    # re: 又是JS的問題!最近研究中……  回復(fù)  更多評論   

    2006-08-05 19:52 by hahahehe
    問題出在你第二次把鼠標移動上去時你的high和low早已經(jīng)不是函數(shù)了,你看看你做了什么,high = imgHigh;low=imgLow;你的函數(shù)變成了image對象,當然會出錯,你改一下
    function high(imgHigh){
    haha = imgHigh;
    if(typeof(lowlighting) != "undefined") clearInterval(lowlighting);
    highlighting=setInterval("highlightit(high)",100);
    }

    function low(imgLow){
    hehe = imgLow;
    clearInterval(highlighting);
    lowlighting = setInterval("lowLight(low)",100);
    }
    這樣應(yīng)該ok了

    # re: 又是JS的問題!最近研究中……  回復(fù)  更多評論   

    2006-08-05 19:54 by hahahehe
    噢,沒改完
    highlighting=setInterval("highlightit(haha)",100);

    lowlighting = setInterval("lowLight(hehe)",100);

    # re: 又是JS的問題!最近研究中……  回復(fù)  更多評論   

    2006-08-06 18:16 by 兵臨城下
    hahahehe!多謝了,幾次問題都是在你的幫助下得以解決,學(xué)到不少東西!
    以后有問題一定向你請教!

    # re: 又是JS的問題!最近研究中……  回復(fù)  更多評論   

    2006-08-06 18:46 by 兵臨城下
    在hahahehe提醒后,覺得是有點問題。但感覺JS中語法的卻不太嚴謹,方法名居然會和img名搞混。JS引擎解析時,方法和變量是同等對待的,而且我再high()方法中沒有申明直接使用的high變量是全局的嗎?

    剛在修改這個JS的時候,我這樣用為什么不行?
    function high(imgHigh){
    //haha = imgHigh; 將此行注釋
    if(typeof(lowlighting) != "undefined") clearInterval(lowlighting);
    highlighting=setInterval("highlightit(imgHIgh)",100); //相應(yīng)更換,直接使用參數(shù)
    }

    function low(imgLow){
    //hehe = imgLow; 將此行注釋
    clearInterval(highlighting);
    lowlighting = setInterval("lowLight(imgLow)",100); // 相應(yīng)更換,直接使用參數(shù)
    }

    為什么不行呢?提示找不到imgLow。難道傳過來的參數(shù)作用域是局部的,而且參數(shù)傳的是引用,不是值?
    也許是受JAVA的影響,有點迷糊了!呵呵

    # re: 又是JS的問題!最近研究中……  回復(fù)  更多評論   

    2006-08-06 20:34 by hahahehe
    setInterval函數(shù)比較奇怪,它只認識全局變量,不認識局部變量,上面的haha和hehe沒用var來修飾,所以他們是全局變量,你傳過來的參數(shù)是局部變量,所以它不認識,setInterval的第一個參數(shù)除了可以是string之外,也可以就是一個function,是字符串的話它就把這個字符串當作代碼來執(zhí)行一遍,如果是function的話,它就調(diào)用這個函數(shù),但這樣有一個問題,你沒法給這個function 傳參數(shù)
    比如setInterval("f()", 1000)和setInterval(f, 1000),他們的作用是一樣的,但是如果函數(shù)f需要一個參數(shù),前面的你可以寫成setInterval("f(1)", 1000),而后面的那種方法就行不通了,但是前面的那種形式你的參數(shù)必須是一個全局的,所以也不是很爽,可以把后面的那種形式變通一下,讓它支持參數(shù),因此我寫了一個函數(shù)bind,它返回一個函數(shù)
    function bind(func, args) {
    return function() {
    func.apply(null, args);
    };
    }
    注意函數(shù)變量的方法apply的第二個參數(shù)要求是一個數(shù)組,那么你的
    highlighting=setInterval("highlightit(imgHIgh)",100);
    可以寫成這樣
    highlighting=setInterval(bind(highlightit, [imgHIgh]), 100);
    這樣你就不用擔心局部還是全局的問題了,hoho

    # re: 又是JS的問題!最近研究中……  回復(fù)  更多評論   

    2006-08-06 22:04 by 兵臨城下
    就setInterval只認全局變量,一般其他的方法就可以使用局部變量?
    如果這樣你的自定義方法不錯,是個解決辦法!

    # re: 又是JS的問題!最近研究中……  回復(fù)  更多評論   

    2006-08-11 12:36 by hahahehe
    反正把代碼直接寫到字符串里然后執(zhí)行它就是一點奇怪,setInterval就是例子 "highlightit(imgHIgh)",它居然不認識參數(shù)imgHIgh,我也懶得去管它這個怪異的執(zhí)行字符串表達式的功能,還是寫一個函數(shù)在那里比較放心
    主站蜘蛛池模板: 免费精品人在线二线三线区别| 84pao国产成视频免费播放| 色吊丝最新永久免费观看网站| 久久夜色精品国产噜噜亚洲AV| 久久精品国产大片免费观看 | 国产精品久免费的黄网站| 亚洲AV成人一区二区三区在线看| 57PAO成人国产永久免费视频| 亚洲午夜电影在线观看| 免费精品国偷自产在线在线| 亚洲av极品无码专区在线观看| 成人免费男女视频网站慢动作| 亚洲AV成人影视在线观看| 国产成人aaa在线视频免费观看| 日韩毛片在线免费观看| 黑人大战亚洲人精品一区| 在线播放免费人成毛片乱码| 91亚洲精品第一综合不卡播放| 日韩视频在线精品视频免费观看 | 亚洲国产人成网站在线电影动漫| 亚洲成色www久久网站夜月| 国产日韩在线视频免费播放| 亚洲成色在线综合网站| 99re免费在线视频| 99999久久久久久亚洲| 国产色爽免费视频| 国产无限免费观看黄网站| 久久91亚洲精品中文字幕| 免费下载成人电影| 国产亚洲精品仙踪林在线播放| 亚洲午夜日韩高清一区| 8090在线观看免费观看| 亚洲精品无码专区久久| 国产亚洲一区区二区在线| 24小时在线免费视频| 亚洲AV永久无码精品放毛片| 国产亚洲成AV人片在线观黄桃| 美女视频黄的全免费视频网站| 免费在线观看自拍性爱视频| 久久久久亚洲AV成人无码| 午夜一级免费视频|