所以我之前问了这个问题并得到了答案,但仍然无法正常工作,我稍微更改了代码,基本上我想根据正在运行的函数选择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";
?>
答案 0 :(得分:0)
注意:强> 在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>