Protovis JavaScript没有't在dropdownlist onchange事件中工作

Protovis JavaScript doesn't work in dropdownlist onchange event

本文关键字:onchange dropdownlist 事件 工作 没有 JavaScript Protovis      更新时间:2023-09-26

我注意到了以下问题。当我删除任何一个代码块时,任何一个都能很好地工作,但当我把它们放在一起时,只有一个能工作。

我正试图使用onchange事件从dropdownlist调用一个方法,但在添加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>

我想让他们两个都正常工作。

上面的代码在这里按预期工作:http://jsfiddle.net/nrabinowitz/NAEku/

但是,当我在页面的其他地方实际调用Colour()函数时,出现了一个错误,我猜这就是问题的根源。这里的问题是,当您将script块与type="text/javascript+protovis"一起使用时,页面完全加载后,Protovis库会对其进行评估,因此您在javascript+protovis块中定义的任何函数或变量在页面下方的普通脚本块的全局范围中都不可用。

所以我的猜测是,您试图在Protovis块被评估之前调用Colour()。由于您没有使用任何特殊的Protovis语法,因此本例的快速解决方案是将script块更改为type="text/javascript",这将使其正常求值。

更新,功能jsFiddle在这里:http://jsfiddle.net/nrabinowitz/NAEku/1/