0

次の問題に気付きました。コードのいずれかのブロックを削除すると、どちらもうまく機能しますが、それらをまとめると、そのうちの 1 つだけが機能しました。

dropdownlistイベントを使用してメソッドを呼び出そうとしてonchangeいますが、Protovis/JavaScript のコードを追加すると失敗します。

<script type="text/javascript">
        function getDate()
        {
            alert("dateValue");
        }
        
    </script>

<script type="text/javascript+protovis">
  function Colour(color) {
  new pv.Panel()
  .width(12)
  .height(20)
  .anchor("center").add(pv.Dot)
  .strokeStyle(null)
  .fillStyle(color)
  .radius(5)
  .root.render();
   }

</script>

<select name="mydropdown" onchange="getDate(this)">
<option value="None">Select Date</option>
</select>

両方とも正常に動作するようにしたい。

4

1 に答える 1

1

上記のコードは、ここで期待どおりに機能します: http://jsfiddle.net/nrabinowitz/NAEku/

しかし、ページの他の場所で実際にColour()関数を呼び出すと、エラーが発生し、それが問題の原因であると推測されます。ここでの問題は、 でscriptブロックを使用すると、ページが完全に読み込まれたtype="text/javascript+protovis"に Protovis ライブラリによって評価されるため、ブロックで定義した関数や変数は、通常のスクリプトのグローバル スコープでは使用できません。ページのさらに下のブロック。javascript+protovis

Colour()したがって、 Protovis ブロックが評価される前に呼び出そうとしていると思います。この例の簡単な修正は、特別な Protovis 構文を使用していないため、scriptブロックをtype="text/javascript"に変更するだけです。これにより、通常どおり評価されます。

更新された機能的な jsFiddle はこちら: http://jsfiddle.net/nrabinowitz/NAEku/1/

于 2011-07-10T04:35:12.020 に答える