javascript中的索引值

javascript中的索引值,javascript,indexing,Javascript,Indexing,我有以下代码: <script type="text/javascript" > function showAlert() { alert("I am clicked"+this.innerHTML+this.index); } window.onload = function one() { var a1 = [1,2,3]; for (var i=0;i<a1.length;i++) {

我有以下代码:

<script type="text/javascript" >

   function showAlert()
   {
      alert("I am clicked"+this.innerHTML+this.index);
   }

   window.onload = function one()
   {
      var a1 = [1,2,3];
      for (var i=0;i<a1.length;i++)
      {
         var p = document.createElement('p');
         p.innerHTML = a1[i];
         p.onclick = showAlert;
         document.body.appendChild(p);
      }
      console.log("I am called");
   }

</script>

函数showAlert()
{
警报(“我被点击”+this.innerHTML+this.index);
}
window.onload=函数一()
{
var a1=[1,2,3];
对于(var i=0;i
this.innerHTML警告单击的元素的值,但this.index显示未定义

这是因为DOM元素没有
索引
属性

如果要使用索引(我假设您正在谈论创建段落的
I
值),可以将其存储在DOM元素的
data-*
属性中:

// In the loop creating the paragraphs...
p.setAttribute("data-index", i);
…然后通过
getAttribute
使用它:

alert("I am clicked"+this.innerHTML+this.getAttribute("data-index"));
从技术上讲,您也可以使用“expando”属性:

// In the loop creating the paragraphs...
p.myReallyUniqueName = i;
…然后使用它:

alert("I am clicked"+this.innerHTML+this.myReallyUniqueName);

…但这样做通常不被认为是最佳做法,尤其是因为您必须小心,不要使用稍后可能用于DOM中其他内容的名称(例如,我会远离
index
data-*
属性是为此类特殊信息明确保留的。

在您的示例中,此引用paragrah元素。因此它没有任何属性索引

查找单击索引的一种方法是将其作为段落属性传递,如下所示:

function showAlert(){
  alert("I am clicked"+this.innerHTML+this.getAttribute('index'));
}

window.onload = function one(){
var a1 = [1,2,3];
for (var i=0;i<a1.length;i++) {
var p = document.createElement('p');
p.innerHTML = a1[i];
p.onclick = showAlert;
p.setAttribute("index", i); // Set the attribute index to <p>
document.body.appendChild(p);
}

 console.log("I am called");
函数showAlert(){
警报(“我被点击了”+this.innerHTML+this.getAttribute('index'));
}
window.onload=函数一(){
var a1=[1,2,3];

对于(var i=0;i我可以建议您使用jQuery解决方案。您可以使用$(this).index()获取元素的索引。
希望这能有所帮助。

在您的
showart
函数中,
这个
表示一个没有任何
索引
属性的html对象。您应该将数组索引值存储在html元素的
id
属性中,或者存储在
data XXX
属性中。谢谢,但我希望代码保持简单。因此,我将d使用set和get。@user2567857:对。这是我的第一个建议。我知道jquery,所以我明确建议使用javascript