2012-05-23 36 views
0

我希望定義一個變量定義一個變量:的JavaScript從點擊列表元素的ID

var alumniName = // id from a list (example: <li id="JoeJohnson">Joe Johnson</li>). 

我想要的變量,以匹配訪問者點擊了什麼。 (例如:

<li id="JoeJohnson">Joe Johnson</li> 
// when a visitor clicks on the name Joe Johnson... the variable = JoeJohnson 

<li id="FredSmith">Fred Smith</li> 
// when a visitor clicks on the name Fred Smith... the variable = FredSmith 

等)

任何幫助深表感謝-Thanks-

+6

[你嘗試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – j08691

+1

你使用JavaScript庫嗎? (順便提一下,你的問題是超級基礎的,你可能應該首先閱讀關於JavaScript事件處理的教程。) –

回答

0

試試這個 HTML:

<ul> 
<li data-name='Joe Johnson'>Joe Johnson</li> 
<li data-name='Fred Smith'>Fred Smith</li> 
</ul> 

的JavaScript(被稱爲上身體負荷):

var alumniName = ''; 
var liElems = document.getElementsByTagName('li'); 

for (var i=0; i<liElems.length; i++) 
{ 
    liElems[i].onclick = function(){ 
     alumniName = this.getAttribute('data-name'); 
     alert(alumniName); 
    }; 

} 
+3

你忘了一些東西。 – Bergi

+0

哎呀!添加了缺少的JS,這裏是一個演示:http://jsfiddle.net/Pnn8p/ – walmik

+0

謝謝,這完全解決了! –

1

點擊發生時,您只能將變量設置爲與點擊相關的內容。使用event listener

var recentClickedId = null; // init, nothing clicked on now 
// let this happen onload, i.e. when the DOM is available: 
document.body.addEventListener("click", function(event){ 
    var el = event.target; 
    if (el.nodeName.toLowerCase() == "li") 
     recentClickedId = el.getAttribute("id"); 
}, false); 
+0

這將在IE中失敗......我很確定歌劇? document.body不交叉compat(OP的FYI - 否則是很好的答案) – rlemon

+0

在你弄錯我之前:我不是說你應該提供交叉compat版本。 OP可以做一些工作......但總是很高興提到他需要研究它。 – rlemon

+0

呃,IE不知道[document.body](http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-56360201)?歌劇肯定會... – Bergi

2

我們不得不做出您的設置一些假設......但在這裏乘坐高峯,看看這是有道理的。沒有圖書館需要。

HTML

<ul id="myList"> 
<li data-name='Joe Johnson'>Joe Johnson</li> 
<li data-name='Fred Smith'>Fred Smith</li> 
</ul> 

的Javascript

var list = document.getElementById('myList'), 
    alumniName; 

Array.prototype.forEach.call(list.getElementsByTagName('li'), function(item) { 
    item.onclick = function() { 
     alumniName = this.getAttribute('data-name'); 
     // or if you feel you still want to use ID's to store the values (spaces are not allowed) you can just ref this.id 
    }; 
}); 
+0

如果您閱讀Bergi's vs我的 - 您會注意到使用事件偵聽器...什麼事件偵聽器可以讓您將多個偵聽器添加到同一個事件中。如果你在寫'事件'。onclick = function'那麼你已經在所有元素/事件 – rlemon

+0

上寫下了所有的監聽器,你忘記了某個地方的.getElementsByTagName(「li」),是不是? – Bergi

+0

狗屎是的,我做到了。糾正(儘管不是糾正錯誤的最好方法:P) – rlemon