4

我正在尝试做的是访问 div 中的隐藏对象。发生的事情是用户将单击按钮,然后该按钮将执行一些任务,例如删除用户。如果我展示我所拥有的,这可能会更容易。

<div class="mgLine">
    <input type="hidden" name="tenentID" value="1">
    <p class="mgName">James Gear</p>
    <input type="text" class="mgBill" value="" placeholder="Post Bill Link Here">
    <a href="#" class="mgButton" onclick="alertTest(this)">Submit Bill</a>
    <a href="#" class="mgNP">Not Paid</a>
    <a href="#" class="mgButton">Change Password</a>
    <a href="#" class="mgButton">Delete User</a>
</div>

我希望系统做的是在按下“提交账单”时提醒它从隐藏字段中获取的值。

function alertTest(e){
//e.parentNode
window.alert(e.parentNode.getElementsByTagName("tenentID")[0]);
}

我正在尝试使用 JavaScript DOM 来访问该元素。我希望这至少有一些意义。页面上会有很多这样的条目。

4

5 回答 5

6

现代方法是使用querySelector.

e.parentNode.querySelector("[name=tenentID]");

http://jsfiddle.net/ExplosionPIlls/zU2Gh/

但是,您也可以通过更多手动 DOM 解析来做到这一点:

var nodes = e.parentNode.getElementsByTagName("input"), x;
for (x = 0; x < nodes.length; x++) {
    if (nodes[x].name === "tenentID") {
        console.log(nodes[x]);
    }
}

http://jsfiddle.net/ExplosionPIlls/zU2Gh/1/

于 2013-05-29T23:11:12.397 回答
6

您需要使用getElementsByName而不是getElementsByTagName

function alertTest(e){
//e.parentNode
window.alert(document.getElementsByName("tenentID")[0]);
}

getElementsByTagName 用于根据其标签选择元素,例如 div、input 等。

按名称获取元素

getElementsByTagName

意识到您可能有多个 div 部分并且您的隐藏输入是您可以使用这些的第一个孩子:-

e.parentNode.getElementsByTagName("input")[0].value;

或者

e.parentNode.firstElementChild.value;

如果它不是第一个孩子并且您知道该位置,那么您可以使用

e.parentNode.children(n).value; //n is zero indexed here

小提琴

于 2013-05-29T23:11:32.287 回答
0

尝试这个:

function alertTest(e){
    alert(e.parentNode.getElementsByName("tenentID")[0].value);
}
于 2013-05-29T23:10:52.677 回答
0

我通常在隐藏元素上设置一个 id 属性,然后使用getElementById.

<input type="hidden" id="tenentID" name="tenentID" value="1">

那我可以用...

var tenentValue = document.getElementById("tenentID").value;
于 2013-05-29T23:15:26.083 回答
0

一般来说,访问特定元素的最佳选择是给它一个 ID,然后使用 getElementById()。

function alertTest(ID){
  alert(document.getElementById(ID).value);
}

名称可以在页面上重复,但 id 必须是唯一的。

于 2013-05-29T23:16:36.577 回答