簡體   English   中英

兩次聲明javascript函數

[英]Declaration of a javascript function twice

我需要用不同的方式聲明一個函數兩次,讓我更多地解釋一下:

function test(var){

    //treatments
}

function test(var){

   alert("something" +var);

}

這是HTML代碼:

<select name="choices" onchange="test(this)">

    <option value="1">test1</option>
    <option value="2">test2</option>

</select>

我如何才能使它們同時工作而不將所有功能都集成在一起?

在javascript中沒有方法/函數重寫這樣的事情。 最后定義的哪個函數優先。 您可以將邏輯拆分為不同的功能,但需要某種主要功能來決定要使用哪個功能。

Javascript確實具有switch語句,因此這可能很適合您的問題。 這將比大的if / else塊更整潔。 類似以下內容可能會起作用。

function test(el){
  switch(el.value){
  case 1:
    alert('option 1 selected');
    break;
  case 2:
    alert('Option 2 selected');
    break;
  default:
    alert('Another option was selected');
  }
}

試想一下您是Java腳本運行時...您將如何檢測到這種歧義? 答案是否定的。 您不能在同一范圍內定義具有相同簽名的函數。

但是我的建議是使用某種“命名空間”:

var yourNamespace1 = {

    test: function(var) {
        //treatments
    }
};

var yourNamespace2 = {

    test: function(var) {
        alert("something" +var);
    }
};

這是簡單的JS對象,具有鍵“測試”的已定義功能

並通過yourNamespace1.test(...)yourNamespace2.test(...)訪問函數

您正在根據下拉列表中的選擇尋求不同的行為。 這是一種方法:

<select name="choices" onchange="test(this)">

    <option value="1">test1</option>
    <option value="2">test2</option>

</select>

function test(el)
{
   var num = el.options[el.selectedIndex].value;
   if (num == 1)
   {
       // case 1
   }
   else if (num == 2)
   {
       // case 2
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM