Нажми на меня
$('.clickme').click(function(event) { event.preventDefault(); var stringId = $(this).attr("id"); var mId = stringId.substring(2) ....
Я могу получить значение id с использованием идентификатора элемента привязки. Я думаю, что я должен получить его прямо из href. Итак, как мне получить значение id и status из HREF (строка запроса url)?
Я использую JQuery.
Спасибо за помощь.
UPDATE: Также как я могу получить все значение URL-адреса .. ie "test.php? Id = 100 & blah = blah"?
Этот код:
function querySt(ji) { hu = $(".clickme").attr("href"); gy = hu.split("&"); for (i=0;i<gy.length;i++) { ft = gy[i].split("="); if (ft[0] == ji) { return ft[1]; } } }
Чтобы использовать его:
document.write(querySt("id")); document.write(querySt("status"));
Ответьте на свое «обновление»:
var stringId = $(this).attr("id"); // this will return p_100 var stringId = $(this).attr("id").split('_')[1]; // this will return 100 var attr= $(this).attr("href"); // this will return all href attribute value
ОБНОВИТЬ
//href="test.php?id=100&status=pending&time=2009" var attrFromAnchor= $(this).attr("href").split('?')[1].split('&')[0].split('=')[1]; // returns 100
Здесь есть много хороших решений, но я решил, что отправлю свое. Вот небольшая небольшая функция, которую я собрал вместе, которая будет анализировать строку запроса в формате либо из window.location.search, либо из предоставленного значения строки поиска;
Он возвращает хэш пар значений id, поэтому вы можете ссылаться на него в форме:
var values = getQueryParams(); values['id'] values['blah']
Вот код:
/* This function assumes that the query string provided will contain a ? character before the query string itself. It will not work if the ? is not present. In addition, sites which don't use ? to delimit the start of the query string (ie. Google) won't work properly with this script. */ function getQueryParams( val ) { //Use the window.location.search if we don't have a val. var query = val || window.location.search; query = query.split('?')[1] var pairs = query.split('&'); var retval = {}; var check = []; for( var i = 0; i < pairs.length; i++ ) { check = pairs[i].split('='); retval[decodeURIComponent(check[0])] = decodeURIComponent(check[1]); } return retval; }
Чтобы получить значение строки запроса из URL без синтаксического анализа строки, вы можете:
window.location.search.substr(1)
Если вы хотите, чтобы имя страницы было раньше? вам все равно нужно выполнить синтаксический анализ строк:
var path = window.location.pathname.replace(/^.*\/(.*)$/,'$1'); var query = path + window.location.search; //If your URL is http://www.myserver.com/some/long/path/big_long%20file.php?some=file&equals=me //you will get: big_long%20file.php?some=file&equals=me
Надеюсь это поможет! Приветствия.
Вот краткая (но полная) реализация для получения всех пар имя / значение из строки запроса:
function getQueryParams(qs) { qs = qs.split("+").join(" "); var params = {}; var tokens; while (tokens = /[?&]?([^=]+)=([^&]*)/g.exec(qs)) { params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]); } return params; } //var query = getQueryParams(document.location.search); //alert(query.foo);
Нет необходимости в jQuery, это решение работает во всех браузерах:
function querySt(ji) { hu = window.location.search.substring(1); gy = hu.split("&"); for (i=0;i<gy.length;i++) { ft = gy[i].split("="); if (ft[0] == ji) { return ft[1]; } } return ""; }
Ответы здесь устарели .
var qd = {}; // qd stands for query dict document.getElementById("p_100")[0].href.split("?")[1].split("&").forEach(function(item) {var k = item.split("=")[0], v = decodeURIComponent(item.split("=")[1]); (k in qd) ? qd[k].push(v) : qd[k] = [v,]})
Мне нравится притворяться, что это oneliner , но мне сказали, что это не так. хм … Кто бы в любом случае раздробил цепные вызовы функций на новых линиях, верно?
пример:
"test.php?id=100&status=pending&time=2009" > qd id: ["100"] status: ["pending"] time: ["2009"] // values can also be obtained like this > qd.id[0] // "100" > qd["id"][0] // "100"
в"test.php?id=100&status=pending&time=2009" > qd id: ["100"] status: ["pending"] time: ["2009"] // values can also be obtained like this > qd.id[0] // "100" > qd["id"][0] // "100"
* Он возвращает массивы, потому что он оптимизирован для многозначных ключей . Посмотрите здесь на фиктивные решения (без массивов).
Примечание. Чтобы научить старые браузеры новому .forEach
вы можете ввести этот полиполк из Mozilla (MDN).