[英]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.