我尝试做的是访问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来访问该元素。我希望这至少在某种程度上是有道理的。页面上会有很多条目。
答案 0 :(得分:6)
您需要使用getElementsByName
代替getElementsByTagName
function alertTest(e){
//e.parentNode
window.alert(document.getElementsByName("tenentID")[0]);
}
getElementsByTagName用于根据标签选择元素,例如div,输入等。
意识到你可能有多个div部分,你的隐藏输入是你可以使用它们的第一个孩子: -
e.parentNode.getElementsByTagName("input")[0].value;
或
e.parentNode.firstElementChild.value;
如果它不是firstCHild并且您知道该位置,那么您可以使用
e.parentNode.children(n).value; //n is zero indexed here
答案 1 :(得分:5)
现代方法是使用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]);
}
}
答案 2 :(得分:0)
试试这个:
function alertTest(e){
alert(e.parentNode.getElementsByName("tenentID")[0].value);
}
答案 3 :(得分:0)
我通常在隐藏元素上设置id属性,然后使用getElementById
。
<input type="hidden" id="tenentID" name="tenentID" value="1">
然后我可以使用......
var tenentValue = document.getElementById("tenentID").value;
答案 4 :(得分:0)
一般来说,访问特定元素的最佳选择是给它一个ID,然后使用getElementById()。
function alertTest(ID){
alert(document.getElementById(ID).value);
}
名称可以在页面上重复,但ID必须是唯一的。