Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据功能选择特定的onchange事件_Javascript_Html_Function_Triggers_Onchange - Fatal编程技术网

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

Javascript 根据功能选择特定的onchange事件,javascript,html,function,triggers,onchange,Javascript,Html,Function,Triggers,Onchange,所以我以前问过这个问题,得到了答案,但仍然不起作用,我对代码做了一些修改,基本上我想根据正在运行的函数选择onchange事件。因此,我有以下代码,但它没有做任何事情,下面的onchange将启动checkVal函数,在这个函数中,我想说,如果某个函数在页面上运行,例如updatebrand,然后运行onchange event updatestyle,我知道我做得不对: <SELECT NAME="choicestyle" onChange="checkVal()"; > <

所以我以前问过这个问题,得到了答案,但仍然不起作用,我对代码做了一些修改,基本上我想根据正在运行的函数选择onchange事件。因此,我有以下代码,但它没有做任何事情,下面的onchange将启动checkVal函数,在这个函数中,我想说,如果某个函数在页面上运行,例如updatebrand,然后运行onchange event 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>
所以我现在用这段代码编辑了最上面的代码,它给出了一个错误,我把$lastRunFunc放在两个函数updateBrand中的每个函数中,并将其设置为0,然后将其放在updatenewBrand中,并将其设置为1,所以当发生一次更改时,它应该触发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";
?>
退房

注: 在HTML和内联javascript中使用大写字母是非常糟糕的做法。这就是我转换为addEventListener调用的原因


如果我理解正确的话,我认为实现这一点的最好方法是在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>

谢谢,我试过你的密码了。我该怎么说呢?因为当页面加载时,它应该自动运行函数updatebrand,这意味着onchange应该触发updatestyle。加载后,如果用户进行了更改,则应触发updatenewbrand。我认为您需要再次尝试清楚地定义您的问题,包括您定义的每个函数的用途。否则,我们必须继续在黑暗中刺杀我没有做正确的事情。因此,基本上,当页面加载时,默认情况下运行UpdateBrand时,函数UpdateStyle驻留在该函数中。现在UpdateBrand有一个带有2个选项的下拉菜单,只要用户通过选择一个选项进行更改,Onchange就会触发函数UpdatenewBrand,并在该函数中驻留UpdatenewStyle。现在,如果选择了UpdatenewBrand,我希望我的另一个Onchange选择UpdatenewStyle。UpdatenewBrand基本上与UpdateBrand相同,只是其中驻留着UpdatenewStyle而不是updatestyle。还值得注意的是,Updatenewstyle和updatestyle函数是下拉列表,其选项随Onchange而更改。