Может ли значение атрибута javascript быть определено параметром url вручную? - PullRequest
0 голосов
/ 28 января 2011

Я пытаюсь отобразить данные из внешнего файла .jsp, который настроен примерно так:

<tag>
  <innertag1 id="1">
  <innertag1 id="2">
</tag>
<tag>
  <innertag2 id="3">
  <innertag2 id="4">
</tag>

Чтобы отображать информацию только из одного конкретного тега "innertag", я сейчас использую:

NodeList labs = XMLInfo.getElementsByTagName("innertag1");

Я бы хотел с легкостью выделить любой конкретный тег. Теоретически я мог бы создать много отдельных страниц и просто изменить значения на «innertag2», «innertag3» и т. Д., Но это, очевидно, немного непрактично.

Есть ли способ определить значение с помощью параметра URL? Например, если бы я хотел отображать данные только из «innertag2», есть ли способ, чтобы URL http://www.server.com/data.jsp?id=innertag2 корректно корректировал тэг?

Спасибо, любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 28 января 2011

Вы можете анализировать document.location.href и извлекать параметры оттуда.Это из старого HTML-файла, где я использовал эту технику (однако не уверен, что она совместима со всеми браузерами).

var args = {};

function parseArgs()
{
    var aa = document.location.href;
    if (aa.indexOf("?") != -1)
    {
        aa = aa.split("?")[1].split("&");
        for (var i=0; i<aa.length; i++)
        {
            var s = aa[i];
            var j = s.indexOf("=");
            if (j != -1)
            {
                var name = s.substr(0, j);
                var value = s.substr(j + 1);
                args[name] = value;
            }
        }
    }
}
1 голос
/ 28 января 2011

Не уверен, что это то, что вы ищете, но вы можете получить доступ к параметрам из URL, используя location.search.

6502 ответ достаточно хорош, это не параметры декодирования URL. Приведенная ниже функция немного более отточена (описательные имена переменных, без глобальных переменных)

function getUrlParams() {

  var paramMap = {};
  if (location.search.length == 0) {
    return paramMap;
  }
  var parts = location.search.substring(1).split("&");

  for (var i = 0; i < parts.length; i ++) {
    var component = parts[i].split("=");
    paramMap [decodeURIComponent(component[0])] = decodeURIComponent(component[1]);
  }
  return paramMap;
}

Тогда вы могли бы сделать

var params = getUrlParams();
XMLInfo.getElementsByTagName(params['id']); // or params.id
...