1

私はグーグルしてこれを行う方法を見つけようとしていますが、何も思いつきません。SVGでJavaScript変数にアクセスするにはどうすればよいですか?

SVGで記述されたインターフェイスに取り組んでいますが、現在の日付と時刻を取得し、フォーマットして表示する必要があります。

私はしようとしています

<text id="epgDate" x="1130" class="epg-date text" text-anchor="end" width="180">

    <script type="text/javascript"><![CDATA[
    setInterval( currentDate, 1000);
    ]]></script>

</text>
<text id="epgTime" x="1170" class="epg-time text">

    <script type="text/javascript"><![CDATA[
    setInterval( currentTime, 1000);
    ]]></script>

</text>

「currentDate()」と「currentTime()」は別の場所で定義されています。

これにより、何らかの構文エラーが発生します(このインターフェイスを実行するためにクライアントのエミュレータツールを使用しているため、これ以上具体的なことは何もわかりません)。 EDIT 構文エラーはどこかにあり、修正されました。ただし、これはまだ機能しません。「alert('x')」や「document.write('x')」などの簡単な関数を使おうとしても。

誰かがSVGで現在のDateTimeを取得する方法を知っているか、JavaScriptで取得してsetInterval()を使用して定期的にエコーアウトする方法を知っていますか?

事前に助けてくれてありがとう!

4

1 に答える 1

0

私が混乱していたのは、SVG と HTML マークアップ ページの違いだったようです。SVG はわずかに異なる DOM を使用するため、要素へのアクセス / 設定が常にまったく同じ方法で機能したり、同じメソッドを使用したりするとは限りません。

私はこのスクリプトを書き、SVG で描画された日付と時刻要素の日時を設定することができました。

<script type="text/ecmascript"><![CDATA[

                // Format Date
                var date = new Date();
                var month = date.getMonth() + 1;
                var day = date.getDate();
                var year = date.getFullYear();

                var monthsByName = ["January", "February", "March",     "April", "May", "June", "July",
                    "August","September", "October", "November", "December"];

                var formattedDate = monthsByName[month - 1] + " " + day + ", " + year;

                var textNode = document.createTextNode(formattedDate);
                document.getElementById("epg-date").appendChild(textNode);

                // Format Time
                    // Source: bbrame @ StackOverflow
                var hours = date.getHours();
                var minutes = date.getMinutes();
                var ampm = hours >= 12 ? 'PM' : 'AM';
                hours = hours % 12;
                hours = hours ? hours : 12;
                minutes = minutes < 10 ? "0"+minutes : minutes;

                var formattedTime = hours + ':' + minutes + ' ' + ampm;

                var timeNode = document.createTextNode(formattedTime);
                document.getElementById("epg-time").appendChild(timeNode);

            ]]></script>
于 2013-03-14T05:08:07.553 に答える