根据功能选择特定的onchange事件

时间:2013-12-12 15:12:39

标签: javascript html function triggers onchange

所以我之前问了这个问题并得到了答案,但仍然无法正常工作,我稍微更改了代码,基本上我想根据正在运行的函数选择onchange()事件。所以我有以下代码,但它没有做任何事情,下面onchange将触发checkVal()函数,在这个函数中我想说如果某个函数在页面上运行,例如。 updatebrand()然后运行onchange事件updatestyle(),我知道我没有这样做:

<SELECT NAME="choicestyle" onChange="checkVal()"; >
<option disabled="disabled" selected="selected"></option>

<SCRIPT>
function checkVal(){
    var e = document.getElementById("choicestyle");
    e.onchange = function() {
        if (e.value == "updatebrand()") { 
            updatestyle();
        } else if (e.value == "updatenewbrand") {
            updatenewstyle();
        }
    }
}
</SCRIPT>

所以我现在用这段代码编辑了顶级代码并且它给出了一个错误,我在每个函数updateBrand()中放入$ lastRunFunc并将其设置为0并将其放入updatenewBrand()并将其设置为1,所以当onchange发生时它应该触发updatestyle()和updatenewstyle()函数但是我一直得到对象预期的错误?

<SELECT NAME="choicestyle" onChange="checkVal();">
<option disabled="disabled" selected="selected"></option>


<?
  echo "checkVal() {\n\n";

  if($lastRunFunc==0) 
  {
  echo "updatestyle();\n";
  }
  if($lastRunFunc==1)
  {
  echo "updatenewstyle();\n";
  }
  echo "}\n\n";
?>

2 个答案:

答案 0 :(得分:0)

查看this working fiddle

  

注意:   在HTML和内联javascript中使用大写是非常糟糕的做法。这就是我转换为addEventListener()电话的原因。

答案 1 :(得分:0)

如果我理解正确,我认为实现这一目标的最佳方法是在你的javascript中有一个全局变量,每个正在运行的函数都可以访问它。然后基于全局变量,您可以相应地运行checkVal()。

<script>
    var lastRunFunc = "";
    function updatebrand(){
        lastRunFunc =  "updatebrand";
    }
    function updatebrand2(){
        lastRunFunc = "updatebrand2";
    }
    function checkVal(){
        if(lastRunFunc === "updatebrand"){/*do one thing*/}
        if(lastRunFunc === "updatebrand2"){/*do another thing*/}
    }
</script>