【问题标题】:JSP, Javascript, getting ElementId within another IdJSP,Javascript,在另一个 Id 中获取 ElementId
【发布时间】:2011-08-03 15:57:36
【问题描述】:

我今天的问题围绕着 Websphere JSP 环境中的 javascript 世界...

我的代码有点像这样:

<div id="randomDynamicId">
    <input id="whatIwantToGetTo">
</div>

我知道我可以直接查找该 id,但这是在 Websphere 门户中,我“应该”能够通过 document.getElementById() 直接链接到它,但我总是需要获取前一个 div。
(它最终成为带有命名空间的 portlet id,因为有时这些 portlet 可能会被复制,所以我只想专门针对一个)

我有什么办法可以做到这一点?
提前致谢。

【问题讨论】:

  • 如果你的代码被复制,以至于你得到多个嵌套的 &lt;input&gt; 元素具有相同的“id”值,那就不好了。在任何给定页面上,“id”属性的值都必须是unique;这就是使它们成为标识符的原因。
  • @Goncalo:我认为这个问题有点不清楚。你想做什么? whatIwantToGetTo 的问题是不是以名称空间为前缀,因此您最终会在页面上出现多个具有相同 id 的元素?在这种情况下,请将您的 JSP 重写为命名空间中的所有 id 属性。 (无论如何,至少如果 portlet 有可能在 any 页面上出现多次!)
  • @Gustav,它确实为外部 div id 和类生成命名空间,但还没有为输入生成命名空间,反正​​现在还没有,我真的不认为它会很快添加(我处于原型阶段)。但是感谢您清除它,使用名称空间和添加的 ID,我应该能够轻松访问它!请将此添加为答案,而不是作为评论,因为我想给你功劳。
  • 你不是实际上使用JSF吗?是的?只需给组件及其父UINamingContainer 组件一个固定的id。它最终会像parentId:inputId。自己查看生成的 HTML 源代码。
  • @BalusC 事情是这样的,这是 IBM Portal Server... Portlet 出现在同一页面中……好吧,我为此编写的代码会到处乱七八糟。然而,我最终还是使用了门户服务器提供的命名空间检索。

标签: javascript html jsp websphere-portal websphere-7


【解决方案1】:

根据您的要求,我发布了我之前的评论作为答案,更详细一点:如果问题是 whatIwantToGetTo 没有命名空间前缀,那么您最终会在您的页面上有多个具有相同 id 的元素,您还应该将您的 JSP 重写为命名空间中的所有 id 属性。无论如何都应该这样做(也就是说,如果您可以修改 HTML),至少如果 portlet 有可能在任何页面上出现多次!

但是,当您使用 WebSphere Portal 7 时,您很可能拥有 Dojo,您可以像这样利用其 CSS 样式的选择器机制:

var inputElement = dojo.query('#randomId > input');

【讨论】:

  • 是的,dojo 确实救了我,问题是我必须找到命名空间,对获得的命名空间数据运行子字符串限制器,然后搜索所有 id 和类(因为在某些情况下websphere 门户,它为给定名称添加类而不是 id)(添加了命名空间)
【解决方案2】:

你想要的是

document.getElementById ('whatIwantToGetTo').parentNode

【讨论】:

    【解决方案3】:

    如果你可以使用 jQuery,你可以这样做:

    var parent = $('#whatIwantToGetTo').parent();
    

    See Here

    纯 javascript 替代方案是这样的: alert(document.getElementById('objectIWant').parentNode.id);

    See here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 2021-09-09
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多