DOM에 아직 [아직]되지 않은 요소에 대해서는 GetElementById를 사용합니까?

StackOverflow https://stackoverflow.com/questions/1077139

  •  21-08-2019
  •  | 
  •  

문제

내가 아는 한 document.getElementById ( 'myid')는 이미 문서에있는 HTML 요소 만 찾습니다. JS를 통해 새로운 요소를 만들었지 만 아직 문서 본문에 추가하지 않았다고 가정 해 봅시다. 일반적으로 getElementById와 같이 ID 로이 요소에 액세스 할 수있는 방법이 있습니까?

var newElement = document.createElement('div');
newElement.id = 'myId';
// Without doing: document.body.appendChild(newElement);
var elmt = document.getElementById('myId'); // won't work

그것에 대한 해결 방법이 있습니까? (이 특정 요소에 대한 참조를 저장하고 싶지 않다고 말해야합니다. 그래서 ID를 통해 액세스해야합니다).

고맙습니다!

도움이 되었습니까?

해결책

그것이 문서의 일부가 아니라면, 당신은 그것을 사용하여 그것을 잡을 수 없습니다. document.getElementById. getElementById DOM 조회를 수행하므로 요소가 나무에 있어야합니다. 플로팅 DOM 요소를 만들면 단지 메모리에 존재하며 DOM에서 액세스 할 수 없습니다. 보이려면 DOM에 추가해야합니다.

나중에 요소를 참조 해야하는 경우 다른 함수에 대한 참조를 전달하기 만하면 JavaScript의 모든 객체가 참조로 전달되므로 다른 함수 내에서 해당 DOM 요소에서 작업하면 사본이 아닌 원본을 수정하십시오.

다른 팁

getElementById는 문서 개체의 메소드입니다. 문서에 있지 않은 것을 반환하지 않을 것입니다.

참조를 저장하지 않으면 Huh? 마술처럼 ID로 공기에서 꺼낼 수 있다면 공기는 그것에 대한 참조가 될 것입니다.

그것을 만든 경우 다른 기능에 객체를 전달하고 직접 액세스 하시겠습니까?

function createDiv()
{
  var newElement = document.createElement('div');
  doWorkWithDiv(newElement);
}

function doWorkWithDiv(element)
{
  element.className = 'newElementCSS';
  element.innerHTML = 'Text inside newElement';
  addToDoc(element);
}

function addToDoc(element)
{
  document.body.appendChild(element);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top