2012-10-18 3 views
1

그래서 다음과 비슷한 일련의 div를 생성하려고 할 때 innerHTML을 사용하기 시작했습니다.innerHTML에 의해 생성 된 div에 직접 어떻게 연결할 수 있습니까?

<div id="123233"></div> 
<div id="123234"></div> 
<div id="123235"></div> 

이제는이 div에 직접 연결하고 싶다는 것을 깨달았습니다. 예를 들어

: 나는 몇 가지 시나리오를 발견했다

을 www.example.com/page#123234.

  1. www.example.com/page#123234로 바로 가면 # 123234가없는 것처럼 작동합니다.
  2. 처음으로 www.example.com/page로 이동 한 다음 url에 # 123234를 추가하면 원하는대로 작동합니다.
  3. www.example.com/page#123234로 가서 같은 URL에 다시 쓰면 작동하지 않습니다.
  4. 시나리오 2를 수행 한 다음 페이지를 다시로드하면 동일한 위치에 유지됩니다.
  5. 시나리오 2를 수행하고 같은 URL에 다시 쓰면 작동하지 않습니다. 마음이와

그래서 내 질문이 ...

어떻게 innerHTML을에 의해 생성 된 사업부로 직접 연결 할 수 있습니까?

추가 정보 :

나는 모든 곳에서 일할 수있는 링크를하고 싶습니다. 외부 도메인이거나 www.example.com/startpage와 같은 다른 페이지 일 수 있습니다.

+0

링크 _from_ 어디서? div가 동적으로 추가 된 후 같은 페이지의 다른 곳? – nnnnnn

+0

시나리오 1은 요소가 아직 존재하지 않기 때문에 간단히 작동하지 않습니다. 당신은 해시 값 ('document.location.hash')을 다루는 커스텀 함수를 작성하고 생성 된 후에 그 요소로 스크롤 할 수있다. –

답변

1

JavaScript에서는 innerHTML을 사용할 수 있도록 onload 일종의 스크립트를 사용하거나 끝에 모든 스크립트를 넣어야합니다. 나는 전자를 추측 할 것이다. 그래서, 당신은 모든이가하고있는

window.onload = function() { 
    document.body.innerHTML += "<div id=\"123233\"></div>"; 
    window.location.hash = window.location.hash; 
}; 

입니다 : 당신이 해시합니다 (# 이후 비트)를 새로 선을 추가하는 경우

window.onload = function() { 
    document.body.innerHTML += "<div id="123233"></div>"; 
}; 

, 그때 당신이 기대하는 장소로 이동한다 해시를 이미 설정된 것으로 설정하지만, 해시가 설정된 경우 유효한 해시라는 점이 다릅니다. 반면 페이지가 처음로드 될 때는 그렇지 않습니다.

+0

고마워요! 당신의 도움을 주셔서 감사합니다. – Niko

+0

예, 죄송합니다. 그러나 아직 답변을 upvote하는 옵션이 없습니다. – Niko

1

각 요소에 ID를 할당 했으므로 요소를 만든 후 ID를 기준으로 요소를 찾은 다음 쿼리 문자열에서 가져 와서 해당 위치로 페이지를 스크롤 할 수 있습니다.

innerHTML이 아닌 javascript 명령으로 요소를 만드는 것이 좋습니다. 이미이 방법을 참조 했으므로 말입니다.

또한 ID는 HTML 사양과 마찬가지로 문자로 시작해야합니다.

+0

감사합니다. 고맙습니다. – Niko

+0

html5를 사용하면 ID가 숫자로 시작되고 숫자로만 시작될 수 있습니다. – nnnnnn

관련 문제