Как извлечь параметр из URL в прототипе?

#javascript #url #prototypejs

#javascript #url #prototypejs

Вопрос:

Я хочу получить параметр из html-ссылок.

Например, у меня есть следующая HTML-строка.

Пример 1:

 <div class='mydiv'><a href="/display/2">Link</a></div>    // get 2
  

Пример 2:

 <div class='mydiv'><a href="/display/abc">Link</a></div>  // get abc
  

Как я могу это сделать?

Спасибо

Комментарии:

1. Пожалуйста, предоставьте код, который вы написали до сих пор, и полностью опишите, с чем у вас возникли проблемы и где вы застряли.

2. Я только что попробовал это $('mydiv').innerHTML , и результат <a href="/display/2">Link</a>

Ответ №1:

ознакомьтесь с моей скрипкой, которая демонстрирует необходимую функциональность с прототипом.

или проверьте ниже…

 var links = $$('div.mydiv > a[href]').inject([], function(arr, el) {
    arr.push($A(el.getAttribute('href').split('/')).last()); 
    return arr;  
});
  

Ответ №2:

Использование функции разделения

 $("a").each(function(){

   var hrefSplit = this.href.split("/");
   if(hrefSplit){
       var asssociatedParam = hrefSplit[ hrefSplit.length -1 ];
    }

});
  

В чистом JavaScript

 arr = document.getElementsByTagName("a");
for( var k = 0; k < arr.length; k  ){
     var hrefSplit = arr[0].href.split("/");
       if(hrefSplit){
           var asssociatedParam = hrefSplit[ hrefSplit.length -1 ];
        }
}
  

Ответ №3:

Просто обработайте его как массив и используйте split() функцию:

 var myURL = "/display/2";
var splits = myURL.split("/");

alert(splits[splits .length - 1]);
  

Редактировать

Я неправильно понял ваш первоначальный вопрос. Я думал, вам просто нужно знать, как извлекать 2 и abc из href. Поскольку я не знаю prototype.js (Я специалист по jQuery), вот чистое решение JS:

 var classElements = document.getElementsByClassName("mydiv");
var parsedHrefs = new Array();

for(var i = 0; i < classElements.length; i  ) {
    var anchorsInDiv = classElements[i].getElementsByTagName("a");

    for(var j = 0; j < anchorsInDiv.length; j  ) {
        var splitHref = anchorsInDiv[j].href.split("/");
        parsedHrefs.push(splitHref[splitHref.length - 1]);
    }
}

alert(parsedHrefs);
  

Вы можете просмотреть рабочую скрипку здесь.

Дополнительная информация

В случае, если вам интересно, вот как это было бы сделано в jQuery:

 var aryParsedHrefs = new Array();

$(".mydiv").find("a").each(function() {
    var splitHref = $(this).attr("href").split("/");
    aryParsedHrefs.push(splitHref[splitHref.length - 1]);
});

alert(aryParsedHrefs);
  

Скрипка.

Комментарии:

1. Как я получу /display/2 from <div class='mydiv'><a href="/display/2">Link</a></div> ?

2. document.getElementsByTagName(‘a’)[0].href

3. что-то вроде: $(«.mydiv»).find(«a»).attr(«href»); (если у вас есть только 1 ссылка на href в вашем div). Лучше предоставить ему класс для выбора. Кстати, это jQuery

4. @JamesHill: спасибо за ваши усилия. Я получил еще один короткий ответ здесь, в прототипе.