3

時限ループを追加したいことを除いて、完全に機能するスクリプトを作成しました。私はJavascriptを初めて使用し、数日間これに頭を悩ませてきました。専門家が私を助けてくれることを願っています。

また、FireFoxで動作するためにこれが必要なだけです!

このスクリプトは、XMLからデータを取得しています。XMLに何も見つからない場合、ページは通常どおり表示されます。何かが見つかった場合は、見つかった情報を表示するポップアップdivを作成し、オーディオファイルを再生します。

ポップアップは、外部CSSスタイルシートを呼び出してXMLセットに何も見つからない場合、可視性が非表示に設定された単純なdivです。何かが見つかった場合は、別のスタイルシートを参照し、オーディオファイルを再生し、表示されているdiv設定をtrueに変更します。

このスクリプトが20〜30秒ごとにXMLファイルをチェックし続けるように、どういうわけかループを追加する必要があります。何かが見つかった場合は、非表示のDIVが表示され、音声アラートが再生されます。このスクリプトは、ページをリロードせずにスクリプトをループさせることができないという事実を除いて、完全に機能します。

<head>これもタグに入れておきたいです。

    <head>
    <script type="text/javascript">

    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("GET","xml/SearchRequest-11988N.xml",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML;
    
    xtotaltickets=xmlDoc.getElementsByTagName("issue")[0].getAttributeNode("total");
    totaltickets=xtotaltickets.nodeValue;
    ytotaltickets=parseInt(totaltickets);
    
    if (ytotaltickets<1)
    {
    document.write("<link rel='stylesheet' type='text/css' href='notickets.css'>");
    }
    else
    {
      document.write("<link rel='stylesheet' type='text/css' href='newtickets.css'>");
      var audioElement = document.createElement('audio');
      audioElement.setAttribute('src', 'newticket.ogg');
      audioElement.play();
    }
    
    </script>

繰り返しますが、FireFoxで動作するために必要なのはこれだけです!

4

1 に答える 1

2

コードを関数に入れ、間隔を使用します。

<head>
<script type="text/javascript">

function refreshXml() {

    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("GET","xml/SearchRequest-11988N.xml",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML;

    xtotaltickets=xmlDoc.getElementsByTagName("issue")[0].getAttributeNode("total");
    totaltickets=xtotaltickets.nodeValue;
    ytotaltickets=parseInt(totaltickets);

    if (ytotaltickets<1)
    {
    document.write("<link rel='stylesheet' type='text/css' href='notickets.css'>");
    }
    else
    {
      document.write("<link rel='stylesheet' type='text/css' href='newtickets.css'>");
      var audioElement = document.createElement('audio');
      audioElement.setAttribute('src', 'newticket.ogg');
      audioElement.play();
    }
}

setInterval(refreshXml, 20000);

</script>

あなたがチェックする必要がある他のいくつかの事柄:

  • 重複するコンテンツを作成せずに、関数を複数回呼び出すことができることを確認してください。特に、必要な要素がまだ存在しないかどうかを確認してから作成する必要があります。

  • コードが適切なタイミングで実行されるようにするには、bodyonloadイベントをリッスンすることをお勧めします。また、jQueryを使用することを検討してください。これにより、コードの記述と保守が容易になります。

于 2012-07-16T03:17:30.870 に答える