代码之家  ›  专栏  ›  技术社区  ›  ishandutta2007

this.parentnode不在dom中工作[duplicate]

  •  -5
  • ishandutta2007  · 技术社区  · 8 年前

    这个问题已经有了答案:

    getSelection = () => {
      console.log("this", this); //valid but empty json
      console.log("this.parentNode", this.parentNode); //<=undefined
    }
    document.querySelector('i.edit').addEventListener('click', getSelection, false);
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <div class="control-group">
      <label for="name" class="control-label">
              <p class="text-info">Alex<i class="icon-star"></i> </p>
            </label>
      <input type="text" class="edit-input" />
      <i class="fa fa-pencil edit" aria-hidden="true"></i>
    </div>
    1 回复  |  直到 8 年前
        1
  •  1
  •   Asons Oliver Joseph Ash    8 年前

    当您使用箭头函数时, this 不是指对象。

    使用 event.target 财产

        <div class="control-group">
          <label for="name" class="control-label">
                  <p class="text-info">Alex<i class="icon-star"></i> </p>
                </label>
          <input type="text" class="edit-input" />
          <i class="fa fa-pencil edit" aria-hidden="true">edit</i>
        </div>
    
        <script>
          getSelection = (e) => {
            //console.log("this", this); //valid but empty json
            console.log("e.target.parentNode", e.target.parentNode); //<=undefined
          }
          document.querySelector('i.edit').addEventListener('click', getSelection, false);
        </script>