【问题标题】:Uncaught ReferenceError: sel is not defined at HTMLDivElement.onclick未捕获的 ReferenceError: sel 未在 HTMLDivElement.onclick 中定义
【发布时间】:2020-12-21 13:50:12
【问题描述】:

每当我点击 div 时,都会出现错误“未捕获的 ReferenceError:sel 未在 HTMLDivElement.onclick 中定义” 我目前正在研究角度 8。它给了我这个错误。我看到了一些与错误相关的相同帖子,但没有人真正解决我的问题

任何帮助将不胜感激谢谢!

我的 HTML 代码

<div id="container">
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    </div>

我的 TS 代码

import { Component, OnInit  } from '@angular/core';



@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'samarsolprac';

  constructor() { }

 sel(id) {
    var divs = document.getElementById('container').getElementsByTagName('div');
    for(var i=0;i<divs.length; i++) {
        if(divs[i]!=id) {
            divs[i].className='items';
        }
    }
    id.className= 'selitem';
}

    ngOnInit() {
    }


}

我的 CSS 代码

import { Component, OnInit  } from '@angular/core';



@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'samarsolprac';

  constructor() { }

 sel(id) {
    var divs = document.getElementById('container').getElementsByTagName('div');
    for(var i=0;i<divs.length; i++) {
        if(divs[i]!=id) {
            divs[i].className='items';
        }
    }
    id.className= 'selitem';
}

    ngOnInit() {
    }


}
.items
{
    display:block;
    width:200px;
    background-color:white;
    color:black;
    cursor:pointer;
    margin-bottom:5px;
}
.items:hover
{
    background-color:blue;
    color:white;
}
/* css for selected div*/
.selitem
{
    display:block;
    width:200px;
    background-color:red;
    color:yellow;
    cursor:pointer;
    margin-bottom:5px;

}
 <div id="container">
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    <div class="items" onclick="sel(this)">one</div>
    </div>
.items
{
    display:block;
    width:200px;
    background-color:white;
    color:black;
    cursor:pointer;
    margin-bottom:5px;
}
.items:hover
{
    background-color:blue;
    color:white;
}
/* css for selected div*/
.selitem
{
    display:block;
    width:200px;
    background-color:red;
    color:yellow;
    cursor:pointer;
    margin-bottom:5px;

}

【问题讨论】:

    标签: javascript html angular typescript angular8


    【解决方案1】:
      <div id="container">
            <div class="items" (click)="sel(this)">one</div>
            ...
        </div>
    

    在这种情况下this指的是组件本身

    所以你可以这样做:

    打字稿:

      public sel(event): void {
        const divs = document.getElementById('container').getElementsByTagName('div');
        for (let i = 0; i < divs.length; i++) {
          if (divs[i] !== event.target) {
            divs[i].className = 'items';
          }
        }
        event.target.className = 'selitem';
      }
    

    html:

    <div id="container">
      <div class="items" (click)="sel($event)">one</div>
      <div class="items" (click)="sel($event)">one</div>
      <div class="items" (click)="sel($event)">one</div>
      <div class="items" (click)="sel($event)">one</div>
      <div class="items" (click)="sel($event)">one</div>
      <div class="items" (click)="sel($event)">one</div>
      <div class="items" (click)="sel($event)">one</div>
    </div>
    

    【讨论】:

      【解决方案2】:

      使用(click) 代替onclick,如下所示

      <div id="container">
        <div class="items" (click)="sel(this)">one</div>
        ...
      </div>
      

      【讨论】:

      • 我将它从 onclick 更改为 (click)。它解决了之前的错误。但它并没有改变我想要做的点击时“div”的颜色
      • 这似乎是另一个问题,您可以写另一个问题让更多人尝试解决此特定问题。在这个问题中,您想解决点击事件中的错误。我建议你写第二个问题,我也尝试解决它。​​
      • 好的,谢谢
      猜你喜欢
      • 1970-01-01
      • 2023-01-23
      • 2016-11-03
      • 2011-01-05
      • 2016-01-02
      • 2013-10-06
      • 2016-12-17
      相关资源
      最近更新 更多