用于从单击的列表元素定义变量的Javascript';身份证
我想定义一个变量:用于从单击的列表元素定义变量的Javascript';身份证,javascript,variables,Javascript,Variables,我想定义一个变量: var alumniName = // id from a list ( example: <li id="JoeJohnson">Joe Johnson</li> ). var alumniName=//列表中的id(例如:Joe Johnson)。 我希望变量与访问者单击的内容相匹配。 (例如: <li id="JoeJohnson">Joe Johnson</li> // when a visitor clicks
var alumniName = // id from a list ( example: <li id="JoeJohnson">Joe Johnson</li> ).
var alumniName=//列表中的id(例如:Joe Johnson )。
我希望变量与访问者单击的内容相匹配。
(例如:
<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
乔·约翰逊
//当访问者点击乔·约翰逊这个名字时,变量=乔·约翰逊
弗雷德·史密斯
//当访问者点击Fred Smith这个名字时,变量=Fred Smith
等等……)
非常感谢您的帮助-谢谢-试试这个
HTML:
- 乔·约翰逊
- Fred Smith
JavaScript(在主体加载时调用):
var-alumniName='';
var liElems=document.getElementsByTagName('li');
对于(var i=0;i试试这个
HTML:
- 乔·约翰逊
- Fred Smith
JavaScript(在主体加载时调用):
var-alumniName='';
var liElems=document.getElementsByTagName('li');
对于(var i=0;i,您只能在单击发生时将变量设置为与单击相关的内容。使用:
只能在单击发生时将变量设置为与单击相关的内容。请使用:
我们必须对你的设置做一些假设…但是在这里取一个峰值,看看这是否有意义。不需要库
HTML
<ul id="myList">
<li data-name='Joe Johnson'>Joe Johnson</li>
<li data-name='Fred Smith'>Fred Smith</li>
</ul>
我们必须对你的设置做一些假设…但是在这里取一个峰值,看看这是否有意义。不需要库
HTML
<ul id="myList">
<li data-name='Joe Johnson'>Joe Johnson</li>
<li data-name='Fred Smith'>Fred Smith</li>
</ul>
你使用JavaScript库吗?(顺便说一句,你的问题是超基本的。你可能应该先读一本关于JavaScript事件处理的教程。)你使用JavaScript库吗?(顺便说一句,你的问题是超基本的。你可能应该先读一本关于JavaScript事件处理的教程。)如果您阅读Bergi的vs mine-您会注意到事件侦听器的使用…事件侦听器所做的是允许您向同一事件添加多个侦听器。如果您重写了事件。onclick=function
,那么您已经在所述元素/事件上重写了所有侦听器。您忘记了一个.getElementsByTagName(“li”)在某个地方,不是吗?妈的,是的,我纠正了。纠正了(尽管这不是最好的纠正方法:P)如果您阅读Bergi的vs mine-您会注意到事件侦听器的使用…事件侦听器所做的是允许您向同一事件添加多个侦听器。如果您重写了事件。onclick=function
,那么您已经在所述元素/事件上重写了所有侦听器。您忘记了一个.getElementsByTagName(“li”)在某个地方,不是吗?妈的,是的,我做了。更正(虽然不是最好的更正方法:P)这将在IE中失败…我很确定Opera??document.body不是交叉兼容的(仅供参考,否则回答不错)在你误解我之前:我并不是说你应该提供交叉兼容版本。OP可以做一些工作…但是提到他需要研究它总是很好的。为什么,IE不知道?Opera当然知道…哈哈,好吧,我只是疯了。现在我知道IE8<不认识addEventListener…但就像我说的。仅供参考-我想现在每个人都知道你在做什么。这将在IE中失败。我很确定Opera??document.body不是交叉兼容的(仅供OP参考,否则答案不错)在你误解我之前:我并不是说你应该提供交叉兼容版本。OP可以做一些工作…但是提到他需要研究它总是很好的。为什么,IE不知道?Opera当然知道…哈哈,好吧,我只是疯了。现在我知道IE8<不认识addEventListener…但就像我说的。仅供参考-我想现在每个人都知道你在做什么。另一个问题与此相关-我如何将此信息传递给另一个网页上的表单?-第一个网页获取名称,然后将其传递给保存表单的第二个网页。选项:1.你可以将值从第一个网页发布到另一个网页。2.假设另一个网页ebpage在同一个域中,如果另一个页面在新窗口中打开,那么您可以使用opener.alumniName或opener.someVar.3从第一个页面访问变量。如果发送到下一个页面的值很短,那么您甚至可以将它们作为查询字符串附加到下一个页面的url中。4.您甚至可以在一个页面上有两个表单,您好默认情况下,对第二个表单进行反求并在第一个表单完成后显示。您可以轻松地在第二个表单中填充值,因为它位于同一页面:)另一个相关问题-如何将此信息传递给另一个网页上的表单?-第一个网页获取名称,然后将其传递给保存表单的第二个网页。选项:1.您可以将值从第一个网页发布到另一个网页。2.假设另一个网页位于同一域,如果另一个网页在中打开一个新窗口,然后您可以使用opener.alumniName或opener.someVar从第一页访问变量。3.如果发送到下一页的值较短,则您甚至可以将它们作为查询字符串附加到下一页的url中。4.您甚至可以在一页上有两个表单,默认情况下隐藏第二个表单,并在第一个页面后显示表单已完成。您可以轻松填充第二个表单中的值,因为它位于同一页:)
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);
<ul id="myList">
<li data-name='Joe Johnson'>Joe Johnson</li>
<li data-name='Fred Smith'>Fred Smith</li>
</ul>
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
};
});