如何在我的<a> tag?

时间:2015-12-31 19:40:58

标签: javascript html

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.

4 个答案:

答案 0 :(得分:2)

目前,您的innerHTML功能正在尝试打印item innerHTMLfor (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()返回NodeListitems是NodeList,这意味着它没有innerHTML 1}}属性。您需要访问NodeList中元素的属性。

您可以传递所点击元素的索引:

Example Here

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属性:

Example Here

function returnLetter() {
  console.log(this.textContent);
}

作为旁注,您还可以将单个事件侦听器附加到父ul元素,然后访问event.target以获取对所单击{{1}的引用1}}元素:

Example Here

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点。

&#13;
&#13;
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;
&#13;
&#13;

相关问题