ID가없는 h1 요소가 포함 된 기존 HTML 문서가 있습니다. 내가 달성하고자하는 것은 JavaScript를 사용하여 모든 h1 (s)을 얻은 다음 각 고유 ID에 추가 할 수 있어야한다는 것입니다.JavaScript가 HTML 문서에서 h1 요소를 가져와 고유 ID를 업데이트합니다.
검색했지만 작동하는 해결책을 찾을 수 없습니다.
ID가없는 h1 요소가 포함 된 기존 HTML 문서가 있습니다. 내가 달성하고자하는 것은 JavaScript를 사용하여 모든 h1 (s)을 얻은 다음 각 고유 ID에 추가 할 수 있어야한다는 것입니다.JavaScript가 HTML 문서에서 h1 요소를 가져와 고유 ID를 업데이트합니다.
검색했지만 작동하는 해결책을 찾을 수 없습니다.
document.getElementsByTagName("h1")
으로 모두 시도해보십시오. 루프를 반복하여 id
이 있는지 확인하고 적절하게 작동합니다. 시도 :
var h1s = document.getElementsByTagName("h1");
for (var i = 0; i < h1s.length; i++) {
var h1 = h1s[i];
if (!h1.id) {
h1.id = "h1" + i + (new Date().getTime());
}
}
DEMO :http://jsfiddle.net/kTvA2/
데모를 실행 한 후, 당신은 DOM을 검사하는 경우, 당신은 새로운, 독특한 id
이 4 개 h1
요소 만점에 3 개를 볼 수 있습니다. 처음에는 id
인 것을 변경하지 않았습니다.
이 코드는 모든 요소가 준비/렌더링 된 후에 실행해야합니다.이 코드는 window.onload
처리기 안에 코드를 넣음으로써 얻을 수 있습니다. 제공된 데모는 암시 적으로 코드를 실행하도록 설정됩니다.
UPDATE : jQuery로
, 당신은 사용할 수 있습니다
이$(document).ready(function() {
$("h1:not([id])").attr("id", function (i, attr) {
return "h1" + i + (new Date().getTime());
});
});
사용 querySelectorAll()이 헤더의 모든 요소, 다음 반복 얻을 수 각 요소에 대한 고유 한 ID를 생성합니다.
var headerElements = document.querySelectorAll('h1');
for(h in headerElements) {
if(headerElements[h] instanceof Element) {
headerElements[h].id=uniqueIDgenerator();
}
}
난 그냥 Mac에서 파이어 폭스에서 성공없이 위의 노력했다. 나는 html head 섹션 내에서 위 코드를 먼저 사용했다. 그리고 body 요소 내부에서 성공하지 못했다. 내가 뭔가 잘못하고 있는거야? – ManUO
보통 for 루프를 사용하여 인덱스를 반복 할 수있을 때 왜 for for 루프를 사용하고'instanceof Element'를 검사해야합니까? – Ian
@Ian 이것은 jQuery없이 어떻게하는지 알 수있는 방법입니다. 대체 답변을 게시하실 수 있습니다. 더 쉬운 방법을보고 싶습니다. @ManUO 나는 왜 그것이 당신을 위해 일하지 않는지 잘 모르겠습니다. 게시하기 전에 FF로 테스트했습니다. 자리 표시 자 함수'uniqueIDgenerator()'를 고유 한 ID를 생성하는 데 사용하려는 것으로 바꾸어야합니다. –
ID가 원하는 형식은 무엇입니까? 그리고 몇 가지 예제 HTML을 제공 할 수 있습니까? – MasNotsram
ID없이 모든 DOM 요소에 액세스 할 수 있습니다. 왜 이럴 필요가 있니? –
왜? 나는 당신이 원할지도 모르는 몇 가지 이유를 생각할 수 있지만 유용 할 수있는 것들은 "독창적 인"것 이상의 추가적인 요구 사항을 부과 할 것입니다. 어떤 문제를 해결하려고합니까? 우리가 그 사실을 안다면, 우리는 해결책이 무엇인지 생각하지 않고 문제를 해결할 수 있습니다. – Quentin