2012-08-24 87 views
0

我有我的Java腳本是全球性的變量。現在我每次調用內部函數時都會得到不同的值。我需要創建一個帶有選定值的選項標籤,如屬性中的選項標籤,以及一個用於沒有基於變量的選定值的選項標籤我想這是更令人困惑的讓我給你一個例子。需要擺脫許多如果

var a1 = "a1c" // default value but may change 

if(a1 == "all") 
{ 
    var allstatusdefault = '<option value="all" selected="selected">All</option>'; 
} 
else 
{ 
    var allstatusdefault = '<option value="all" >All</option>'; 
} 

if(a1 == "a1b") 
{ 
    var allstatusdefault1 = '<option value="a1b" selected="selected">a1b</option>'; 
} 
else 
{ 
    var allstatusdefault1 = '<option value="a1b" >a1b</option>'; 
} 

if(a1 == "a1bc") 
{ 
    var allstatusdefault2 = '<option value="a1bc" selected="selected">a1bc</option>'; 
} 
else 
{ 
    var allstatusdefault2 = '<option value="a1bc" >a1bc</option>'; 
} 

這僅僅是樣品,但我不得不產生很多不同的values.I選項標記的不想寫了許多,如果..anybody有任何其他的想法?

+1

有很多方法來完成這樣的事情。請爲您的具體問題提供一些額外的背景。 – Kyle

+0

我想上面的代碼解釋了一切。只需要擺脫許多如果的。每次我得到不同的價值,並根據這個價值,我必須選擇我需要選擇哪個項目作爲默認值。所以底線是一個值爲兩個選項的標籤。 –

+0

添加選項並在最後選擇一個。 – epascarello

回答

1

對於初學者,瞭解switch...case。就你而言,它看起來像你可能簡單地通過將變量連接到一個字符串來簡單地使用變量本身來形成字符串。

+2

假設每個'if' /'else'組合設置了一個獨特的變量並且要麼執行,'switch'可能會有點麻煩。 – pimvdb

+0

你能給我一個示例代碼嗎? –

2

從我可以扣除這裏是你應該做的

var default1 = '<option value="'+a1+'" selected="selected">'+a1+'</option>'; 
var default2 = '<option value="'+a2+'" selected="selected">'+a2+'</option>'; 

由於a1值的字符串中重複使用,還不如干脆把它馬上而不是使用多個if語句。

注:當你有很多的if語句其使用switch語句

+0

您不處理選定/未選定的零件。 – sachleen

3

提取公共代碼的絕好機會,我在這裏看到了很多重複的。

var a1 = "a1c"; 

function buildOption(id) { 
    var selected = (a1 == id? ' selected="selected"' : ''); 
    return '<option value="' + id + '"' + selected + '>' + id + '</option>'; 
} 

var allstatusdefault = buildOption('all'); 
var allstatusdefault1 = buildOption('a1b'); 
var allstatusdefault2 = buildOption('a1bc'); 
+0

你不需要'buildOption'中的'return'嗎? –

+0

@DourHighArch:當然太多了[標籤:scala],修正,謝謝! –

0
var a1 = "a1bc" // default value but may change 
    switch(a1) 
     { 
     case "all" : allstatusdefault = '<option value="all" selected="selected">All</option>';break; 
     case "a1b" : allstatusdefault = '<option value="a1b" selected="selected">a1b</option>'; break; 
     case "a1bc" : allstatusdefault = '<option value="a1bc" selected="selected">a1bc</option>'; break; 
     default : allstatusdefault = '<option value="all" >All</option>';break; 
     } 
    window.alert(allstatusdefault); ​ 
+0

我想我不知道上面的代碼是如何工作的。因爲如果allstatusdefault沒有值「a1b」比我需要用它的值生成選項標籤,如。在這種情況下,默認應始終具有「全部」的價值。我不想那樣.. –

+0

很明顯,你不明白它是因爲你的許多ifs,這可能會導致意想不到的結果。 這裏發生的是字符串a1被遺漏。如果它匹配單詞'case'後面的任何字符串,那麼它會執行':'和'; break;'之間的所有內容:'default:'後面的內容是當字符串a1與任何情況都不匹配時會發生什麼。 你可以在那裏填寫你想要的任何值。 – Tschallacka

-1

我想從你寫的代碼,你可以做一個與使用jQuery的方式。首先創建整個HTML,所有選項值使用jQuery對象,如下所示:

var $optionHTML = $('<option value=""> Blahblah </option>'); 現在你可以將這個jquery函數應用於這個傢伙。所以你附加了一個像這樣的新選項。

$optionHTML.append('<option>...</option>')

當你與所有的選項元素使用jQuery選擇方法是爲了找到具有價值屬性相匹配,以a1c然後添加屬性selected然後你做選擇的元素。

如果您需要一些初學者的代碼,請告訴我。

謝謝。

編輯:

下面是答案

<html> 
<head> 
    <script type = "text/javascript" src= "http://code.jquery.com/jquery-1.8.0.min.js"></script> 
    <script type = "text/javascript"> 
     $(document).ready (function() { 
      var value = "test 2"; 
      $select = $("<select></select>"); 
      $optionHTML1 = $('<option value="test 1">Test 1</option>'); 
      $optionHTML2 = $('<option value="test 2">Test 2</option>'); 
      $optionHTML1.appendTo($select); 
      $optionHTML2.appendTo($select); 
      $select.find("[value='test 2']").attr('selected','selected'); 
      alert($select.html()); 
      $("div").append($select); 
     }); 
    </script> 
    <style type = "text/css"> 
    </style> 
</head> 
<body> 
    <div> 
    </div> 
</body> 

+0

即使您在選擇框中有200個選項值,該代碼也可以正常工作。你不必應用開關,它可以正常工作,並且可以擴展。 –

+0

我正在尋找建立一個字符串與我的所有條件的HTML建設時間..謝謝 –

+0

@ravipatel但是,因爲你正在使用的選項,可能只有一個值,可以從選項中選擇正確的,然後這個解決方案wotk.I我正在嘗試它。謝謝。 –