2013-12-12 45 views
1

所以我問這個問題之前,並得到了答案,但仍然沒有工作,我改變了一下代碼,基本上我想選擇一個onchange()事件取決於函數正在運行。所以我有下面的代碼,但它沒有做任何事情,下面的onchange會觸發一個checkVal()函數,並且在這個函數中我想說如果某個函數在頁面上運行,例如。 updatebrand(),然後運行onchange事件updatestyle(),我知道我沒有做這個權利:根據功能選擇一個特定的onchange事件

<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,因此當發生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

退房this working fiddle

注: 它真的不好的做法,在HTML和內嵌的JavaScript使用大寫字母。這就是爲什麼我轉換爲addEventListener()的呼叫。

+0

謝謝我試過你的代碼。我怎麼會這樣做,因爲當頁面加載時,它應該自動運行updatebrand()函數,這意味着onchange()應該觸發updatestyle()。加載後,如果用戶進行更改,則應觸發updatenewbrand()。 – niceguy

+0

我認爲你需要再次嘗試清楚地定義你的問題,包括你定義的每個功能都打算做什麼。否則,我們不得不在暗處刺傷 – srquinn

+0

是的,我沒有做正確的事情。所以基本上當頁面加載時,默認情況下運行UpdateBrand(),在這個函數內部駐留函數UpdateStyle()。現在,UpdateBrand()有一個包含2個選項的下拉菜單,只要用戶通過選擇選項進行更改,Onchange會觸發函數UpdatenewBrand(),並且在此函數中駐留UpdatenewStyle()。現在,如果選擇UpdatenewBrand(),我希望我的其他Onchange選擇UpdatenewStyle()。 – niceguy

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>