0

私は立ち往生しており、JavaScript は初めてです。
HTML では、配列から連続したメッセージを表示するループを取得できます。メッセージが突然表示されるのではなく、フェードインするようにしています。以下のコードで両方の効果を別々に行うことができますが、それらを組み合わせて機能させることはできないようです。コメント/ヘルプに感謝します。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <style type="text/css"> 
        #messaging{ 
            font-size: 35pt; 
        } 
    </style> 
    <script type ="text/javascript" >
        var phrases = ["message1",
            "message2",
            "message3",
            "message4"];
        var msgCycleRate = 3000;
        var text;
        function get( id0 ) {
            return document.getElementById( id0 );
        }
        function cycleMsgs( id1 ) { 
            if ('undefined' === typeof id1){
                id1 = -1;
            } 
            id1 = (id1 + 1)% phrases.length; 
            start(text = get( 'messaging' ).innerHTML = phrases[id1]); //line 37 here
            setTimeout( 'cycleMsgs(' + id1 + ');', msgCycleRate); 
        }
        function doMsgs() { 
           setTimeout( 'cycleMsgs();', 0); 
        }
        var opacity = 0.0;
        var alpha= 0;

        function start(textM) {
            textM.style.filter="alpha(opacity = " + alpha +")";
            textM.style.opacity=opacity;
            setTimeout("fadeIn(textM)",50);
        }

        function fadeIn(textM) {
            opacity= opacity +0.1;
            alpha=parseInt(opacity*100);
            textM.style.opacity=opacity;
            textM.style.filter="alpha(opacity = " + alpha +")";
            if (opacity < 1.0) {
                setTimeout("fadeIn(textM)",50);
            }
        }
        if(window.addEventListener) {
            window.addEventListener('load', doMsgs, false); // non-IE
        }
        else { 
            window.attachEvent('onload', doMsgs); // IE 
        }
    </script>
</head>
<body> 
   <p id ="messaging">/p>
</body>

コードを実行して取得します:

SCRIPT5007: 未定義または null 参照のプロパティ 'filter' を設定できません。行 37 文字 17

ここには何が表示されていませんか? 再度、感謝します。

4

1 に答える 1

0

DOM 要素自体startではなく、HTML を関数に渡します。messaging37 行目を分割すると、問題がより明確になります。

get( 'messaging' ).innerHTML = phrases[id1];
text = get( 'messaging' ).innerHTML;
start(text);

start代わりにDOM 要素を渡すことで、これを修正できます。

start(get('messaging'));
于 2013-09-27T16:04:23.550 に答える