1st School Project : SoftWare_Engineering Small Community Site_0530 Uncaught TypeError: Illegal constructor
2837 ワード
Status Quo
Code
import { getHtmlElemByClassNm} from './utils/index.js'
// 검색 기능
const postProcessor = class {
searchTargets: any;
searchTitleElem : HTMLInputElement = new HTMLInputElement();
constructor(){
this.searchTargets = document.querySelectorAll('[data-search]') as NodeListOf<HTMLElement>
this.searchTitleElem = getHtmlElemByClassNm('post-search-input',document) as HTMLInputElement
}
searchTitle(){
let query = this.searchTitleElem.value
this.searchTargets.forEach((post:HTMLElement)=>{
let postTitle = getHtmlElemByClassNm('title',post)?.textContent
query.split('').map(word=>{
if(postTitle!.toLowerCase().indexOf(word.toLowerCase())!=-1){ //항목 포함
if(post.classList.contains('hidden'))post.classList.remove('hidden')
}else{
if(!post.classList.contains('hidden'))post.classList.add('hidden')
}
})
})
}
connectEvtHandler(){
this.searchTitleElem.addEventListener('keydown',this.searchTitle)
}
}
const postProcessorInst = new postProcessor()
postProcessorInst.searchTitle()
Solution
From
searchTitleElem : HTMLInputElement = new HTMLInputElement();
TosearchTitleElem : HTMLInputElement|null = null;
Link
https://stackoverflow.com/questions/26220243/instantiating-new-htmlelement-in-typescript
WHY ?
searchTitleElem : HTMLInputElement = new HTMLInputElement();
All the HTMLELements (ex, HTMLDiv ... ) has constructor in itself HTMLInputElement()
has constructor initself BUT
You can't construct DOM elements using normal constructors because you're supposed to go through document.createElement. This is basically for technical reasons relating to how browsers implement these objects.
For example
searchTitleElem = document.createElement('div') as HTMLDivElement
BUT
What I want here is to assign specific 'type' ,
so code written for solution might be the ideal case
Reference
この問題について(1st School Project : SoftWare_Engineering Small Community Site_0530 Uncaught TypeError: Illegal constructor), 我々は、より多くの情報をここで見つけました https://velog.io/@dhsys112/1st-School-Project-SoftWareEngineering-Small-Community-Site0530-Uncaught-TypeError-Illegal-constructorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol