2


0

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

<! - このスクリプトとその他多数のスクリプトは、無料でオンラインで入手できます。 http://javascript.internet.com  - >

<! -  var msの始まりms = %% CONTENT_REFRESH %%  -  5。 var stop; stop = 0。 var myvalue;

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

ms = ms − 1。時間= Math.floor(ms / 3600);分= Math.floor(ms / 60); if(minutes <10){minutes = "0" minutes; } seconds = ms  - (分* 60) - (時間* 3600)。 if(seconds <10){seconds = "0"秒。 myvalue = hours ":" minutes ":" seconds; thetime.value = myvalue; if(myvalue == "0:00:00"){stop = 1; if(!stop){setTimeout( "recalc();"、1000);} }}
// End -->

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

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

曲に残った時間:
時間は定義されていませんrecalc()playlist.cgi(87行目)関数onload(event){recalc();表示(); 1(2行目)のエラーソース行:[このエラーで中断] thetime.value = myvalue; \ n

3 Answer


3


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

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

var thetime;

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

'' '' '

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

また、文字列ではなく関数を使用してsetTimeoutを呼び出すことをお勧めします。 `" display(); "`と `" recalc(); "`をそれぞれ `+ display `と ` recalc +`に置き換える必要があります。


3


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


あなたに変数 "foo"を与えるでしょう - これは非標準的です、あなたはするべきです

document.getElementByName( "foo")

タイマー出力要素を取得します。


0


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

そして、単にname = "thetime"の代わりにid = "thetime"を入力に追加します。