0

我注意到以下问题。当我删除任一代码块时,任何一个都可以正常工作,但是当我将它们放在一起时,只有一个可以正常工作。

我试图从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 回答