var checklist = document.getElementById("my-ul");
var items = checklist.querySelectorAll("a");
console.log(checklist);
console.log(items);
for (var i = 0; i < items.length; i++) {
items[i].addEventListener("click", returnLetter);
}
function returnLetter() {
alert(items.innerHTML);
}
<ul id="my-ul" class="pager">
<li><a href="#">A</a>
</li>
<li><a href="#">B</a>
</li>
<li><a href="#">C</a>
</li>
<li><a href="#">D</a>
</li>
<li><a href="#">E</a>
</li>
<li><a href="#">F</a>
</li>
<li><a href="#">G</a>
</li>
<li><a href="#">H</a>
</li>
<li><a href="#">I</a>
</li>
</ul>
My javascript seems to not return anything, the alert prints out 'undefined', but I can't figure out where my problem is. My goal is to return the letter corresponding to the button/link the user has clicked.
答案 0 :(得分:2)
目前,您的innerHTML
功能正在尝试打印每item
的innerHTML
个for (var i = 0; i < items.length; i++) {
items[i].addEventListener("click", alertValue);
}
function alertValue() {
alert(this.innerHTML);
});
。要解决此问题,请仅通过将该项目传递给该函数来提醒该项目的this
,如下所示:
items
事件处理函数中的of
将指向被单击的元素(调用事件处理程序),而不是指向in
数组。
请参阅JSFiddle.net上的工作示例。
答案 1 :(得分:2)
它返回undefined
因为.querySelectorAll()
返回NodeList而items
是NodeList,这意味着它没有innerHTML
1}}属性。您需要访问NodeList中元素的属性。
您可以传递所点击元素的索引:
for (var i = 0; i < items.length; i++) {
items[i].addEventListener("click", returnLetter.bind(items[i], i));
}
function returnLetter(i) {
console.log(items[i].textContent);
}
但是,更好的选择是使用this
keyword来获取对事件发生的元素的引用。我还建议使用.textContent
属性:
function returnLetter() {
console.log(this.textContent);
}
作为旁注,您还可以将单个事件侦听器附加到父ul
元素,然后访问event.target
以获取对所单击{{1}的引用1}}元素:
a
答案 2 :(得分:2)
您需要在事件侦听器上使用 // Load MainRibbon
protected override Microsoft.Office.Core.IRibbonExtensibility
CreateRibbonExtensibilityObject()
{
return Globals.Factory.GetRibbonFactory().CreateRibbonManager(
new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] { new MainRibbon() }
);
}
。例如,您的代码可以重写为
this
答案 3 :(得分:1)
您应该使用cart_id*
user_id
product_id
product_option_id
product_count
total_amount
time_stamp
user_id+product_id+product_option_id is Unique
作为点击元素的this.innerHTML
点。
this
&#13;
var checklist = document.getElementById("my-ul");
var items = checklist.querySelectorAll("a");
console.log(checklist);
console.log(items);
for (var i = 0; i < items.length; i++) {
items[i].addEventListener("click", returnLetter);
}
function returnLetter() {
alert(this.innerHTML);
}
&#13;