Код:

var links = document.getElementsByTagName('link');
var links_length = links.length;

for (var i = 0; i < links_length; i++)
{
    if (links[i].getAttribute('rel').indexOf('test') !== -1)
    {
        //blabla
        // but now I want to target for example... HREF attribute of link that got test in it's rel attribute... so

        if (links[i].getAttribute('href').indexOf('test2') !== -1)
        {
            //blabla2

            // but it doesn't work
            // it won't give me href with test2 of the link with rel attribute with test. The code give my last link with href of test2... dunno why. Any ideas?
        }
    }
}

Почему я не могу получить правильную ссылку с rel='test' и href='test2'? Итерация атрибута href должна нацеливаться только на ссылки с rel='test', верно?

HTML:

<a href="test2" rel="test">Proper Test</a> // I want to grab this one
<a href="testing" rel="testing">Test</a>
<a href="testing" rel="testing">Test</a>
<a href="test2" rel="besting">Test</a>
<a href="testing" rel="test">Test</a>
0
innertest 31 Дек 2017 в 07:06

2 ответа

Лучший ответ

Глядя на ваши комментарии, я предполагаю, что вы застряли с закрытием javascript. Этот цикл достаточно прост, вам просто нужно прервать, где вы выполнили условия.

var links = document.getElementsByTagName('link');
var mylink = '';

for (var i = 0; i < links.length; i++)
{
    if (links[i].getAttribute('rel').indexOf('test') !== -1)
    {
       if (links[i].getAttribute('href').indexOf('test2') !== -1)
        {
            mylink = links[i];
            break; //If you need the first one. else create an array and keep pushing the ietms.
        }
    }
}

console.log(mylink);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="test" href="www.test2.com">
<link rel="test1"  href="www.test2.com">
<link rel="test2"  href="www.test2.com">
<link rel="test3"  href="www.test2.com">
0
Srikant Sahu 31 Дек 2017 в 04:23

Исправлено несколько ошибок js и сделаны предположения о html. Просто выполните пошаговое устранение неполадок с помощью console.log, alert или отладчика консоли, и вы поймете это.

var links = document.getElementsByTagName('a');

for (var i = 0; i < links.length; i++) {
  if (links[i].getAttribute('rel') == 'test') {

    if (links[i].getAttribute('href') == 'test2') {

      console.log("link index:" + i );

    }
  }
}
<a href="test2" rel="test">Test</a>
<a href="best" rel="testing">Test</a>
<a href="thetest2" rel="testing">Test</a>
<a href="test2" rel="besting">Test</a>
<a href="thetest2" rel="testing">Test</a>
0
JasonB 31 Дек 2017 в 04:31