【问题标题】:How to take the inner text of id and assign it to a specific variable only for a specific inner text如何获取 id 的内部文本并将其分配给仅针对特定内部文本的特定变量
【发布时间】:2015-07-23 10:31:50
【问题描述】:

我有 不同的页面,它们根据 id 内部文本填充具有特定 id 的 div 标签: 以下是带有此 div 的页面的一些不同示例:

<div id="id_name">text page1</div>
<div id="id_name">text page2</div>
<div id="id_name">text page3</div>

我只想取第二个的内部文本并填充一个变量。

我尝试使用这样的东西:

if($("#id_name").length > 0 && $("#id_name").text() === "text page2") {
    site.text = $("#id_name").text();
} 

【问题讨论】:

  • 您的 HTML 无效,因为您不能有重复的 ID!
  • 您的页面上真的有多个具有相同 id 属性的元素吗? site.text 是变量名还是页面上的 HTML 元素?
  • @Teras 首先你应该为你的 html 标签设置唯一的 ID 值,你不能为所有三个需要不同的 div 设置 id_name。

标签: javascript jquery


【解决方案1】:
  1. 不要对多个元素使用相同的 id。见Why is it a bad thing to have multiple HTML elements with the same id attribute?
  2. 改用类
  3. 您可以使用:contains()

if ($(".class_name:contains(text page2)").length > 0) {
  $('body').text("text page2");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<div class="class_name">text page1</div>
<div class="class_name">text page2</div>
<div class="class_name">text page3</div>

【讨论】:

  • @Teras,好的,即使它们是不同的页面,代码应该仍然可以工作。也许我误解了什么?
  • 我无法更改 html 代码。是身份证。我想在其他地方使用它,默认情况下我有这个信息。所以我想检查这个id是否存在以及它的innerText是否等于我想要的。如果两个条件都为真,那么我想将 id 的内部文本分配给特定变量
  • 请问是否可以为我提供这样的解决方法?
  • @Teras,如果您必须使用 id,请更改我的答案中的代码以改用 if ($("[id="id_name"]:contains(text page2)")
  • 为什么你使用body而不是#id_name?
【解决方案2】:

试试这个:

$("[id*='id_name']").each(function(){
    if ($(this).html() == "text page2"){
    site.text($(this).html());  
}
});

【讨论】:

    【解决方案3】:

    试试这个:

    if($("#id_name:eq(1)").length > 0 && $("#id_name:eq(1)").text() === "text page2") {
        site.text = $("#id_name:eq(1)").text();
    } 
    

    Hint 使用类而不是 ID

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      相关资源
      最近更新 更多