이 줄이 문제가되는 :
var oldHTML = document.getElementsByClass('attr-value').innerHTML;
document.getElementsByClass
는 document.getElementsByClassName
해야하고, 그것이 innerHTML
재산이없는 NodeList
을 반환 . NodeList
을 반복하면 각 요소의 innerHTML
을 볼 수 있습니다. 이 같은
뭔가 (live example) :
<script type="text/javascript">
(function() {
var list, index, element, filename;
list = document.getElementsByClassName('attr-value');
for (index = 0; index < list.length; ++index) {
element = list[index];
filename = element.innerHTML.toLowerCase().replace(/ /g, '-').replace(/([^0-9a-z-])/g,'');
element.innerHTML = "<img src='http://www.example.com/" + filename + ".jpg'>";
}
})();
</script>
변경 :
- 는 익명 함수에 모든 것을 넣고 즉시 전역 심볼을 만드는 피하기 위해, 해당 기능을 실행합니다.
- 를 사용하여 올바른
getElementsByClassName
- 루프는 그들을 통해
- 각 요소의
innerHTML
에서 작동합니다.
주 :
- IE가
getElementsByClassName
이없는, 그래서 당신은 당신이 IE에 제공하는 스크립트를로드하는 확인하는 것이 좋습니다. 위의 라이브 예제에서는 제공되지 않았지만 Firefox, Chrome 또는 Opera를 사용하십시오. ("IE 용 getElementsByClassName"을 검색하면 선택할 수있는 여러 가지 구현이 있습니다.)
- 위의
script
태그는 HTML 파일에서 처리하려는 모든 요소 뒤에 있어야합니다.
아니요. 당신은'getElementsByClassName' (그 결과가 아닌 함수)을 배열과 같이 취급하고 있습니다. –
이제 첫 번째 오류가 수정되었습니다.이 새 버전은 첫 번째 오류를 수정하는 중입니다. 그는 분명히 그들 모두를 원한다. –