javascript属性值可以由手动url参数确定吗?

时间:2011-01-27 22:25:33

标签: javascript xml url parameters nodelist

我正在尝试显示来自外部.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 个答案:

答案 0 :(得分:2)

您可以解析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 :(得分:1)

不确定这是否是您要查找的内容,但您可以使用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