<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,我也懶得去管它這個怪異的執行字符串表達式的功能,還是寫一個函數在那里比較放心
    主站蜘蛛池模板: 亚洲国产精品无码久久98| 国产V亚洲V天堂无码| 亚洲一久久久久久久久| 在线观看成人免费视频不卡| 亚洲永久中文字幕在线| 中文字幕免费视频| 精品亚洲AV无码一区二区| 免费看美女被靠到爽的视频| 亚洲最大av资源站无码av网址| 操美女视频免费网站| 亚洲精品成a人在线观看夫| 国产一区二区免费在线| 青青草97国产精品免费观看| 国产亚洲精aa成人网站| 野花香高清在线观看视频播放免费 | 亚洲美女人黄网成人女| 亚洲香蕉免费有线视频| 亚洲va在线va天堂va手机| 免费看片A级毛片免费看| 无码一区二区三区亚洲人妻| 国产国拍亚洲精品福利 | 亚洲综合精品网站在线观看| A级毛片高清免费视频在线播放| 内射少妇36P亚洲区| 免费做爰猛烈吃奶摸视频在线观看 | 国产VA免费精品高清在线| 亚洲色中文字幕无码AV| 99蜜桃在线观看免费视频网站| 亚洲国产精品综合久久久| 成人au免费视频影院| 深夜a级毛片免费视频| 亚洲精品午夜国产VA久久成人 | 亚洲AV无码一区二区三区性色| 免费看国产一级片| 精品一区二区三区免费| 亚洲精品中文字幕无乱码麻豆| 国产视频精品免费| 嫩草成人永久免费观看| 亚洲精品国产摄像头| 亚洲免费观看视频| 精品熟女少妇AV免费观看|