2016-08-11 105 views
-5

你好,我有選擇框顯示從JavaScript數組。從javascript數組獲取密鑰

<h6><strong>Brand</strong></h6> 
    <select data-placeholder="Brand..." multiple id="brand" style="width:200px;height:50px;margin: 0;"> 
    <script language="javascript">print_brand1("brand");</script> 
    </select> 

但是,當我選擇selectbox數據之一,然後它得到值。這裏是javascript代碼

var brand_arr = new Array(
1:"Acer", 
2:"Dell" 
); 

function print_brand1(brand_id){ 
var option_str = document.getElementById(brand_id); 
option_str.length=0; 
option_str.selectedIndex = 0; 
for (var i=0; i<brand_arr.length; i++) { 
option_str.options[option_str.length] = new Option(brand_arr[i],brand_arr[i]); 
} 
} 

當我選擇其中一個選擇框數據時,我如何獲得鍵(不是值)?

+0

你的代碼不工作,你應該使用一個對象(即用'{'和'}')圍繞你的鍵值對而不是Array構造函數。 – dtkaias

+0

這段代碼真的很糟糕。這無法工作 –

回答

1

您的代碼將無法在當前狀態下工作,但是如果你堅持維持目前的陣列結構,你將需要:

var brand_arr = { 
    1: "Acer", 
    2: "Dell" 
}; 

在語法意義不大,分配的1/2的關鍵就沒有什麼感覺,當你可以只使用當前索引+ 1

注意得到這個數字與上述變動,以分配12我們有遍歷一個JavaScript對象的鑰匙,而不是一個JavaScript數組。

如果你想打印12那麼你可以做:

for(var k in brand_arr) { 
    if(brand_arr.hasOwnProperty(k)) { 
     console.log(k); // key 
     console.log(brand_arr[k]); // value 
    } 
} 

雖然這個回答你的問題,我還是會考慮你的數據的結構,它將使更多的意義有類似:

var brand_arr = [ 
    { brand: 'Acer', price: 200 }, 
    { brand: 'Dell', price: 200 } 
]; 

請注意,在上述示例中,我們可以在JSON中添加有關該品牌的額外詳細信息。然後,我們可以迭代品牌數組,以更加可讀的格式獲取每個品牌的更多細節,這與用戶分配的索引及其名稱相反。