2009-10-16 4 views
0

Я хочу поставить rel = lightbox на некоторые ссылки, поддерживающие mediabox, используя javascript.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

Так что, если вы откроете консоль ошибок (Tools -> Консоль ошибок в Firefox), вы увидите две ошибки на странице:

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. но я хочу использовать js, чтобы поместить тег rel –

+0

Нет put rel = "" вручную не работает: нажмите nature1.jpg здесь http://jsbin.com/ihoji/edit. Сначала попробуйте отредактировать это, чтобы он работал без динамического изменения атрибута. Затем вы можете обновить код с комментариями, чтобы динамически устанавливать правильный атрибут. Как я уже сказал, он делает то, что вам нужно, - устанавливает rel = "lightbox" на элементах. – Nickolay

+0

проблема проблема (еще) не решена, этот вопрос разрешен. Спасибо вам всем! –

0

Попробуйте Ускользающий / между com и video.

+0

ok. но это не делает работу –

+0

@ DennyHalim, ладно, но когда вы избегаете '/', регулярное выражение становится действительным. Если регулярное выражение 'не работает', вы можете попытаться объяснить, какие строки вы пытаетесь сопоставить. потому что 'не работает' не говорит мне много. –

+0

Я не знаю много о регулярном выражении. но я протестировал regex здесь http://www.regextester.com/ и никаких ошибок. –