2012-07-08 118 views
4

我有不同的JavaScript功能與每個選項標籤相關聯,以在OpenLayers地圖中打開/關閉圖層。它可以很好地運行Opera,Firefox和IE9,但不適用於Chrome和Safari。我讀過我可以在選擇標籤上使用onchange,但由於我是JavaScript新手,我真的不知道它會如何調用四個不同的函數?HTML中的onclick事件無法正常工作Chrome和Safari

<select size="1" name="usgsfeed" id="usgsfeed"> 
<option value="usgs_hour" onclick="display_usgs_hour();">Past hour, all earthquakes</option> 
<option value="usgs_day" onclick="display_usgs_day();" SELECTED>Past day, magnitude > 1</option> 
<option value="usgs_week" onclick="display_usgs_week();">Past week, magnitude > 2.5</option> 
<option value="usgs_month" onclick="display_usgs_month();">Past month, magnitude > 2.5</option> 
<option value="none" onclick="display_none();">None</option> 
</select> 

回答

9

呼叫根據選擇的價值功能:

<select onchange="window['display_'+this.value]();"> 

如果該值爲"usgs_hour"串聯會'display_' + 'usgs_hour' === 'display_usgs_hour'和功能調用。

的jsfiddle演示:http://jsfiddle.net/Ag3kh/

+1

+1。我即將發佈類似的答案。下面是我創建的小提琴:http://jsfiddle.net/Ag3kh/ – nnnnnn 2012-07-08 12:04:56

+0

@nnnnnn感謝我編輯它 – Esailija 2012-07-08 12:05:53

+0

您將需要一個零選項,或者別的選擇第一 – mplungjan 2012-07-08 12:10:12

2

使用開關結構的選定值

$('#usgsfeed').change(function() { 
    swith($(this).val()) { 
    case 'usgs_hour': 
     display_usgs_hour(); 
     break;..... 
    } 
}) 
+0

如果你要承擔的OP可以使用jQuery爲什麼不'$獲取選定值(本).VAL ()'? – nnnnnn 2012-07-08 11:59:19

+0

並不總是jQuery可用。 – reporter 2012-07-08 11:59:21

+0

並不總是jquery可用 - javascript的解決方案也存在:)但jQuery它很容易 如果你打算假設OP可以使用jQuery爲什麼不用$(this).val()獲得選定的值 - 是的,它是更容易 – 2012-07-08 12:01:50

1

你確實應該用平變化!

在Javascript中做到這一點(不是jQuery的),這會工作:

的JavaScript:

<script type='text/javascript'> 

function SelectChanged() { 
    if (document.aform.usgsfeed.value == "usgs_hour") { 
     alert("usgs_hour chosen"); 
    else if(...etc) 
    } 
} 

</script> 

HTML:

<form name="aform"> 
    <select size="1" name="usgsfeed" id="usgsfeed" onchange='SelectChanged();> 
     <option value="usgs_hour">Past hour, all earthquakes</option> 
     <option value="usgs_day" SELECTED>Past day, magnitude > 1</option> 
     <option value="usgs_week">Past week, magnitude > 2.5</option> 
     <option value="usgs_month">Past month, magnitude > 2.5</option> 
     <option value="none">None</option> 
    </select> 
</form> 
+2

您在事件屬性的開頭不需要'javascript:'。 – nnnnnn 2012-07-08 12:05:55

+0

如果頁面上的第一個腳本是vbscript,則只需要javascript:標籤。否則不需要。 – mplungjan 2012-07-08 12:08:35

+0

@mplungjan沒有任何意義。它不如說'asdasdasdad:'因爲它只是一個死的標籤 – Esailija 2012-07-08 12:12:45

0

有看看的jsfiddle演示:jsfiddle.net/bWdaU/

它使用onchange調用的函數display_usgs_change

我添加了一個臨時<div>以顯示選擇工作。

HTML:

<select id="usgsfeed" name="usgsfeed" size="1" onchange="display_usgs_change();"> 
    <option value="usgs_hour">Past hour, all earthquakes</option> 
    <option value="usgs_day" selected="selected">Past day, magnitude > 1</option> 
    <option value="usgs_week">Past week, magnitude > 2.5</option> 
    <option value="usgs_month">Past month, magnitude > 2.5</option> 
    <option value="none">None</option> 
</select> 
<div id="dummy">Remove this div!</div>​ 

JS:

function display_usgs_change() { 
    document.getElementById('dummy').innerHTML = event.target.value; 
}​ 
相關問題