Javascript - 如何从特定div类中的标记获取属性值?

时间:2015-09-30 01:01:52

标签: javascript html dom

HTML代码片段我需要从以下位置检索值:

<div class="elgg-foot">
  <input type="hidden" value="41" name="guid">
  <input class="elgg-button elgg-button-submit" type="submit" value="Save">
</div>

我需要得到值41,这很简单:

var x = document.getElementsByTagName("input")[0];
var y = x.attributes[1].value;

但是我需要确保我实际上从内部&#34; elgg-foot&#34;中检索值,因为HTML代码中有多个div类。

我可以这样上课:

var a = document.getElementsByClassName("elgg-foot")[0];

然后我尝试以各种方式将其与var x结合起来,但我并不是真的知道这样做的语法/逻辑。 例如:

var full = a.getElementsByTagName("input")[0];

所以:从唯一的类elg-foot中检索值41。

我花了几个小时用Google搜索,但无法找到解决方案(部分原因是因为我不确切知道要搜索的内容)

编辑:感谢大家的答案,他们似乎都有效。我几乎让它自己工作了,只是忘记了原始代码中的[0]。同样欣赏JQuery,之前从未使用过它: - )

5 个答案:

答案 0 :(得分:3)

最简单的方法是使用jQuery并使用CSS选择器:

$(&#34; .elgg-foot&#34;)确实总能让你获得一个带有&#34; elgg-foot&#34;的元素,但是如果你更进一步,你可以使用后代选择器:

$(".elgg-foot input[name='guid']").val()

确保您只获得名为guid的输入,该输入是标有类elgg-foot的元素的子元素。

现代浏览器中的等价物是本机querySelectorAll方法:

document.querySelectorAll(".elgg-foot input[name='guid']")

或者你可以做你自己做的事情:

var x = document.getElementsByClassName("elgg-foot")
var y = x.getElementsByTagName("input")[0];

假设您知道它始终是div中的第一个输入

答案 1 :(得分:1)

你可以这样组合:

    var a = document.getElementsByClassName("elgg-foot")[0];
    var b = a.getElementsByTagName("input")[0];
    var attribute = b.attributes[1].value;
    console.log(attribute); // print 41

将DOM视为树。您可以从根(文档)获取元素中的元素。

答案 2 :(得分:0)

您可以使用querySelector之类的

var x = document.querySelector(".elgg-foot input");
var y = x.value;

答案 3 :(得分:0)

通过选择器https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector

查询dom
var fourty1 = document.querySelector('.elgg-foot input[name=guid]').value;

querySelector将从选择器返回第一个匹配项。这个选择器将找到具有类elgg-foot的元素,然后查看其中一个名为guid的输入元素,然后获取所选元素的值。

答案 4 :(得分:0)

我认为最简单的方法是使用JQuery。但只使用javascript,

const int*

在这里看看这个JSFiddle:http://jsfiddle.net/2oa5evro/