#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: спасибо за ваши усилия. Я получил еще один короткий ответ здесь, в прототипе.