<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

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

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

    ?????????最近想實現一個圖片的漸顯漸無的JS程序,就是鼠標移到上面圖片逐漸清晰,鼠標移走圖片逐漸消失。有點問題向大家請教。
    ?????????相關代碼如下:
    ????????圖片代碼:?<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);
    ?????????}
    ?????????網頁打開后,第一次鼠標移上去漸清晰,移走后也正常逐漸消失,都很正常。可當我再次把鼠標移到圖片上時,就沒有反應了,在移出圖片時JS報錯,說在<img />那行,對象不支持此屬性或方法。
    ????????調了好久也沒成功,特來向大家請教!


    評論

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

    2006-08-05 19:52 by hahahehe
    問題出在你第二次把鼠標移動上去時你的high和low早已經不是函數了,你看看你做了什么,high = imgHigh;low=imgLow;你的函數變成了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);
    }
    這樣應該ok了

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

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

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

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

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

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

    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); //相應更換,直接使用參數
    }

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

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

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

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

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

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

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

    2006-08-11 12:36 by hahahehe
    反正把代碼直接寫到字符串里然后執行它就是一點奇怪,setInterval就是例子 "highlightit(imgHIgh)",它居然不認識參數imgHIgh,我也懶得去管它這個怪異的執行字符串表達式的功能,還是寫一個函數在那里比較放心
    主站蜘蛛池模板: 亚洲人AV永久一区二区三区久久| 国产在线观看免费视频播放器| 亚洲伊人久久大香线蕉综合图片| 国产精品免费观看| 国产在线98福利播放视频免费 | 国产在线a免费观看| 亚洲日本中文字幕| 精品国产污污免费网站 | 亚洲av午夜福利精品一区| 国产高清对白在线观看免费91| 亚洲熟妇少妇任你躁在线观看无码 | 久久国产成人精品国产成人亚洲| 国产亚洲男人的天堂在线观看| 免费观看的av毛片的网站| 国产成人+综合亚洲+天堂| 亚洲A∨午夜成人片精品网站| 免费观看四虎精品成人| 337p日本欧洲亚洲大胆裸体艺术| 亚洲视频在线免费| 亚洲AV无码一区东京热| 最近中文字幕高清免费中文字幕mv | 国产一区二区三区在线免费观看| 国产精品无码亚洲精品2021| 免费va人成视频网站全| 丰满妇女做a级毛片免费观看 | A级毛片高清免费视频在线播放| 成人午夜亚洲精品无码网站| 亚洲 欧洲 视频 伦小说| 日本黄页网站免费| 国产午夜亚洲精品不卡| 亚洲一区二区三区在线观看精品中文| 国产成人精品一区二区三区免费| 亚洲欧洲日本天天堂在线观看| 国产成人免费片在线视频观看| 日亚毛片免费乱码不卡一区| 亚洲国产精品久久久久婷婷老年| 在线视频免费观看高清| 国产精品综合专区中文字幕免费播放| 337p日本欧洲亚洲大胆色噜噜| 国产91久久久久久久免费| 国产精品免费观看调教网|