<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程序,就是鼠標(biāo)移到上面圖片逐漸清晰,鼠標(biāo)移走圖片逐漸消失。有點問題向大家請教。
    ?????????相關(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)頁打開后,第一次鼠標(biāo)移上去漸清晰,移走后也正常逐漸消失,都很正常。可當(dāng)我再次把鼠標(biāo)移到圖片上時,就沒有反應(yīng)了,在移出圖片時JS報錯,說在<img />那行,對象不支持此屬性或方法。
    ????????調(diào)了好久也沒成功,特來向大家請教!


    評論

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

    2006-08-05 19:52 by hahahehe
    問題出在你第二次把鼠標(biāo)移動上去時你的high和low早已經(jīng)不是函數(shù)了,你看看你做了什么,high = imgHigh;low=imgLow;你的函數(shù)變成了image對象,當(dāng)然會出錯,你改一下
    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中語法的卻不太嚴(yán)謹(jǐn),方法名居然會和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ù)比較奇怪,它只認(rèn)識全局變量,不認(rèn)識局部變量,上面的haha和hehe沒用var來修飾,所以他們是全局變量,你傳過來的參數(shù)是局部變量,所以它不認(rèn)識,setInterval的第一個參數(shù)除了可以是string之外,也可以就是一個function,是字符串的話它就把這個字符串當(dāng)作代碼來執(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);
    這樣你就不用擔(dān)心局部還是全局的問題了,hoho

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

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

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

    2006-08-11 12:36 by hahahehe
    反正把代碼直接寫到字符串里然后執(zhí)行它就是一點奇怪,setInterval就是例子 "highlightit(imgHIgh)",它居然不認(rèn)識參數(shù)imgHIgh,我也懶得去管它這個怪異的執(zhí)行字符串表達式的功能,還是寫一個函數(shù)在那里比較放心
    主站蜘蛛池模板: 国产成人免费AV在线播放| 亚洲ts人妖网站| 人妻巨大乳hd免费看| 亚洲国产精品白丝在线观看| 国产情侣久久久久aⅴ免费| 国产成人高清亚洲| 国产精品免费观看久久| 亚洲国产精久久久久久久| 日日麻批免费40分钟无码| 热99re久久精品精品免费| 亚洲欧美中文日韩视频| 国产精品色午夜免费视频| 曰批免费视频播放免费| 成人au免费视频影院| 亚洲精品国产电影| 亚洲综合精品伊人久久| 国产一区二区三区免费| 亚洲黄色网址在线观看| 一个人免费高清在线观看| 亚洲av日韩av激情亚洲| 久草视频在线免费| 激情小说亚洲色图| 亚洲色WWW成人永久网址| 久久精品国产亚洲AV未满十八| 又粗又硬免费毛片| 中文字幕在线视频免费| 亚洲系列国产精品制服丝袜第| 成在人线av无码免费高潮喷水| 亚洲成人在线网站| 免费特级黄毛片在线成人观看| 菠萝菠萝蜜在线免费视频| 国产免费人人看大香伊| 亚洲欧洲免费无码| 国产亚洲人成A在线V网站| 97在线视频免费| 亚洲精品精华液一区二区| 成人免费无码大片A毛片抽搐| 亚洲女人影院想要爱| 免费一级毛片在播放视频| 国内精品一级毛片免费看| 亚洲女子高潮不断爆白浆|