2011-06-29 9 views
0

次の問題に気づきました。いずれかのコードブロックを削除すると、いずれかのコードがうまく機能しますが、それらをまとめて表示すると、どちらか一方しか機能しません。Protovis JavaScriptがドロップダウンリストの変更イベントで動作しない

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

<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> 

私は両方が正しく動作するようにしたいです。ここでは、予想通り

答えて

1

上記のコードは動作します:http://jsfiddle.net/nrabinowitz/NAEku/

しかし、私は実際にページ上の他の場所Colour()関数を呼び出すとき、エラーがありますし、私の推測では、それはあなたの問題の根本だです。ここでの問題は、ブロックscripttype="text/javascript+protovis"で使用すると、の後にProtobisライブラリによってevalされます。したがって、javascript+protovisブロックで定義した関数または変数は、通常のスクリプトブロックのグローバルスコープはページのさらに下にあります。

私は、Protovisブロックが評価される前にColour()を呼び出そうとしていると思います。特殊なProtovisの構文を使用していないので、この例のクイックフィックスは、type="text/javascript"にブロックを変更するだけです。これによりブロックが正常に評価されます。

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

関連する問題