質問

こんにちは、Web開発の達人、 まず、私は自分の目を信じていなかったと言いたいです-IE7でうまく動作するjavascriptの一部を持っていますが、Firefoxではそうではありません!!! :))))それは小さな冗談でした。 :) だから私はすでにあなたに問題を言っていました(冗談ではありませんでした)、今私はjavascriptを貼り付けています:

<script type="text/javascript">

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
var ms;
ms = %%CONTENT_REFRESH%% - 5;
var stop;
stop = 0;
var myvalue;

function display() {
    if (!stop) {
        setTimeout("display();", 1000);
    }
    thetime.value = myvalue;
}
function recalc() {
    var hours;
    var minutes;
    var seconds;

    ms = ms - 1;
    hours = Math.floor(ms / 3600);
    minutes = Math.floor(ms / 60);
    if (minutes < 10) {
        minutes = "0"+minutes;
    }
    seconds = ms - (minutes*60) - (hours*3600);
    if (seconds < 10) {
        seconds = "0"+seconds;
    }
    myvalue = hours+":"+minutes+":"+seconds;
    thetime.value = myvalue;
    if (myvalue == "0:00:00") {
        stop = 1;
    }
    if (!stop) {
        setTimeout("recalc();", 1000);
    }
}
// End -->
</SCRIPT>

これは私が知っている非常に古いスクリプトです。サイトでのwinampとカウントダウンから、現在の残りの曲の時間がかかります。しかし、私が言ったように、Firefoxでは機能しません。

カウントダウンタイマーを呼び出す本体とコードは次のようになります。

<body class="playlist_body" onLoad="recalc();display();">

Time Left In Song: <INPUT align="center" TYPE="text" Name="thetime" size=5 />

</body>

// Edit:FireBugを見ると、次のエラーが表示されました:

thetime is not defined
recalc()playlist.cgi (line 87)
function onload(event) { recalc(); display(); }(load )1 (line 2)
error source line: [Break on this error] thetime.value = myvalue;\n
役に立ちましたか?

解決

問題は、名前でDOM要素にアクセスしていることです。

次のコードを先頭に追加して thetime 要素の変数を宣言し、 id =&quot; thetime&quot; INPUT に追加します、および body 要素の onload init(); への呼び出しを追加します。

var thetime;

function init() {
    thetime = document.getElementById('thetime');
}

ところで、 div のIDを thetime に設定して置き換えることにより、テキストボックスを通常の DIV 要素に置き換えることができます。 thetime.value thetime.innerHTML を使用します。

また、文字列ではなく関数を使用してsetTimeoutを呼び出すことをお勧めします。 &quot; display();&quot; &quot; recalc();&quot; display recalc それぞれ。

他のヒント

IEには「機能」があります。 name属性を持つ要素は、ウィンドウオブジェクトに配置されます。たとえば、

<div name=foo></div>

変数&quot; foo&quot;を提供します-これは非標準です。実行する必要があります

document.getElementByName("foo") 

タイマー出力要素を取得するには。

var thetime = document.getElementById("thetime");

およびid =&quot; thetime&quot;を追加します。 name =&quot; thetime&quot;の代わりに入力へ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top