2009-10-16 7 views
0

javascript를 사용하여 mediabox를 지원하는 일부 링크에 rel = lightbox를 붙이고 싶습니다.getElementsByTagName setAttribute 및 regex javascript

나는 이것을 시도해보고 왜 작동하지 않는지 궁금해하니?

시험 : http://jsbin.com/opica

도와주세요 편집이 : http://jsbin.com/opica/edit

<script type="text/javascript"> 
var x=xmlDoc.getElementsByTagName("a"); 
var regexku=/^.+(((twit)|(tweet)|(com/video.+)|(flickr.com.+)|(tube.com.+))|((gif)|(jpe?g)|(png)|(flv)|(swf)|(mp3)|(mp4))$)/; 

for(i=0;i<x.length;i++) 
{ 
a=x[i].getAttribute('href'); 
if (a.match(regexku) != null) 
    { 
    x.item(i).setAttribute("rel","lightbox"); 
    } 
} 

</script> 
+2

이 컨텍스트에서 xmlDoc은 무엇입니까? 너는 문서를 의미하지 않았다, 그렇지? – prostynick

+0

사실, 원래의 문제는 여기에 있습니다 : http://stackoverflow.com/questions/1575451/lightbox-without-rel-tag-or-addrel-without-jquery –

답변

1

당신은 오류 콘솔 (도구 -> 파이어 폭스 오류 콘솔)를 엽니 다 그렇다면, 당신은 당신의 페이지에 두 개의 오류가 표시됩니다

Error: xmlDoc is not defined 
Source File: http://jsbin.com/opica 
Line: 35 

Error: invalid regular expression flag v 
Source File: http://jsbin.com/opica 
Line: 21, Column: 38 
Source Code: 
var regexku=/^.+(((twit)|(tweet)|(com/video.+)|(flickr.com.+)|(tube.com.+))|((gif)|(jpe?g)|(png)|(flv)|(swf)|(mp3)|(mp4))$)/; 

후자 바트 제안 슬래시를 이스케이프 고정 (com\/video).

전자는 xmlDoc과 같은 것이 없다고 말합니다. 아마도 페이지의 문서를 의미했을 것입니다.이 경우 document으로 바꿔야합니다.

페이지로드가 완료된 후 스크립트를 실행해야하기 때문에 모든 것이 작동하지 않을 수 있습니다. jQuery에서는 $(document).ready(function() { /* do your work here */ })입니다. Google에서는 사용중인 모든 프레임 워크 (mootools-yui?)를 사용하여 어떻게하는지 보여줍니다.

그 후 알 수 있듯이 rel 속성은 http://jsbin.com/elaca/edit 링크에 설정됩니다. 사용중인 라이브러리가 여전히 작동하지 않는다는 사실은 틀린 것을 사용하고 있음을 의미합니다. 라이브러리를 다운로드 한 페이지로 연결하지 않았으므로 다른 사람이 문서를 검색 할 수 있습니다 ...

+0

tnx입니다. 나는 프로그래머가 아니다. 그래서 대부분은 그것을 완전히 이해하지 않고 붙여 넣기 만 복사합니다. 몇 시간 전에 배웠습니다. mediabox : http://mediabox.googlecode.com http://iaian7.com/webcode/mediaboxAdvanced 및 google 호스팅 된 mootols : http://code.google.com/apis/ajaxlibs/documentation/index.html# mootools 수동으로 rel 태그를 입력하면 작동합니다. 하지만 rel 태그를 넣으려면 js를 사용하고 싶습니다. –

+0

rel = ""수동으로 작동하지 않습니다. 여기에서 nature1.jpg를 클릭하십시오. http://jsbin.com/ihoji/edit. 먼저 속성을 동적으로 설정하지 않고이 기능을 편집하려면이 기능을 편집 해보십시오. 그런 다음 주석 처리 된 코드를 업데이트하여 올바른 속성을 동적으로 설정할 수 있습니다. 내가 말했듯이 당신이 원했던 것을 수행합니다 - rel = "lightbox"를 요소에 설정하십시오. – Nickolay

+0

문제는 (아직) 해결되지 않았지만이 문제는 해결되었습니다. 다들 감사 해요! –

0

/comvideo 사이를 빠져보십시오.

+0

ok. 그러나 그것은 작동하지 않습니다. –

+0

@DennyHalim, 알았습니다. 그러나'/'를 벗어나면 정규 표현식이 유효하게됩니다. 정규식이 작동하지 않는다면, 당신은 어떤 문자열을 당신이 매치하려고하는지 설명하려고 할 것입니다. '작동하지 않는다 '는 말을 많이하지 않기 때문입니다. –

+0

나는 정규식에 대해 많이 모른다. 하지만 여기에 정규식을 테스트 http://www.regextester.com/ 및 오류가 없습니다. –