頁面中多個層的innerHTML包含的對象相同,但層的id唯一,如何通過層的id區別相同名稱的對象??


比如:
<div id=d0> ....<input name=t type="text">.... </div>
<div id=d1> ....<input name=t type="text">.... </div>
<div id=d2> ....<input name=t type="text">.... </div>
<div id=d3> ....<input name=t type="text">.... </div>
<div id=d4> ....<input name=t type="text">.... </div>
<div id=d5> ....<input name=t type="text">.... </div>
<div id=d6> ....<input name=t type="text">.... </div>

不同的層的innerHTML里含有相同名稱的對象,怎么用最合理的辦法訪問每一個名稱相同的對象<input name=t type="text"> ??
我想借助於不同的div來間接訪問<input name=t type="text">,這可能么??


但我又不能用getElementByNames("t")(i)這個數組來確定的原因是,在操作過程中,需要刪除某幾個層的內容,這樣就有可能發生這樣的情況:比如,當只剩下<div id=d6>時,那么其中包含的對象不是想當然的getElementByNames("t")(6),而是getElementByNames("t")(0)。所以這就是我為什么要提出借助於不同的div來間接訪問<input name=t type="text">的原因。用隱藏層來模擬刪除可以解決,但不想采用隱藏的辦法。看大家有沒有好的辦法???


如果解決了這個問題,就不用花費300%的精力來轉化、解析、拼湊xml數據了

27 个解决方案

#1


<script>
function gt()
{
var id = document.getElementById('dvid').value.toString();
var pnode = document.getElementById('d'+id);
var sibling = pnode.getElementsByTagName("input")[0].getAttribute("value");
alert(sibling);
}

</script>
</HEAD>

<BODY>
<INPUT TYPE="text" NAME="" id="dvid" value="Please input 0-3">
<input type="button" value="Get it!" onclick="gt();return true;"><br />
0<div id='d0'> ....<input name=t type="text" value='d0d0d0'>.... </div>
1<div id='d1'> ....<input name=t type="text" value='d1d1d1'>.... </div>
2<div id='d2'> ....<input name=t type="text" value='d2d2d2'>.... </div>
3<div id=d3> ....<input name=t type="text" value='d3d3d3'>.... </div>

</BODY>
</HTML>

#2


上面只是透過父結點去取得子結點;另一方面,如果結點確實有你把述的情況,
如果可以,還是盡可能的設置各結點屬性,這樣對各結點的取得及操作將會更加便利

#3


我運行以下,==

#4


其實我就是要的父子節點的效果,就是不知道該怎么表達,謝謝

#5


先截取全部input,循環沒個input並判斷父元素的id是不是你想要的
var inputCollection = getElementByNames("t");
for(var i=0;i<inputCollection.length;i++)
{
if(inputCollection(i).parentElement.id="d#"){你想要的過程}

}

#6


立刻給分,對了您的QQ是多少,

#7


哦 忘了說一下 Input 標簽也可以設定id屬性 這樣就有2個id了 一個是name 一個是id 而且name和id可以不相同 並都可以通過getElementById取得

#8


lantersen(藍水仁--劍鋒於礪出,梅香至苦寒!~) ,你能告訴我gzdiablo() 說的是什么意思么

#9


藍水仁--劍鋒於礪出,梅香至苦寒是 從父節點取得字節點-----.getElementsByTagName("input")[0].getAttribute

而gzdiablo()是反推福節點來判斷-----.parentElement.id

#10


很不錯,我學到了不少,就是js的方法太難記憶了敲一個 . 之后 都 不知道 應該寫什么屬性,

#11


簡單說下吧 可以是這樣
<input name="t" id="d0" value="XXXXXX">
<input name="t" id="d1" value="XXXXXX">
<input name="t" id="d2" value="XXXXXX">
<input name="t" id="d3" value="XXXXXX">
<input name="t" id="d4" value="XXXXXX">

var inputCollection = getElementByNames("t");
for(var i=0;i<inputCollection.length;i++)
{
if(inputCollection(i).id="d0"){你想要的過程}

}

#12


我明白,你的訪問方法沒問題,
但是,
getElementByNames("t"),就因為我沒辦法主動的去控制,所以要從div的id來把握
所以你的方法是對的,但是我還是傾向於從div這個父節點去引領其余的操作。


還有一個問題
pnode.getElementsByTagName("input")[0].getAttribute
可以改成
pnode.getElementsByNames("t")[0].value么?

#13


還有一個問題
pnode.getElementsByTagName("input")[0].getAttribute
可以改成
pnode.getElementsByNames("t")[0].value么?

這個問題,額外給分!!

#14


pnode.getElementsByTagName("input")[0].getAttribute
可以改成
pnode.getElementsByNames("t")[0].value么?如果我想一這種方式改,應該怎么改?

這個問題,額外給分!!

#15


pnode.getElementsByNames("t")[0].value

pnode.getElementsByName("t")[0].value
這樣些才對

#16


不好意思 
getElementsByName是document的方法
所以要
document.getElementsByName("t")[*].value

#17


alert(document.getElementById("d3").getElementsByNames("d3")[0].value);

#18


不行啊??

#19


getElementsByName 是 document 的方法
所以要
document.getElementsByName("t")[*].value

要這樣
alert(document.getElementsByName("d3")[0].value)

還有不要把 getElementsByName 寫成 getElementsByNames

#20


alert(document.getElementById("d3").getElementsByName("t").value);這樣也不可以阿

#21


alert(document.getElementById(  "d3  ").getElementsByName(  "t  ")[0].value);這樣也不可以阿

#22


巨不理解為什么
alert(document.getElementById("d1").getElementsByTagName("input")[0].getAttribute("value")); 可以運行

alert(document.getElementById("d1").getElementsByName("t")[0].value);
不可以運行,誰能告訴我原因,或者下面這種方式該怎么改??

#23


getElementsByName 是 document 的方法
一定要這么寫document.getElementsByName("XXX")

普通元素才支持
getElementsByTagName() 方法

#24


總算明白你想干什么了 這樣寫就可以了


<input name="t" id="d0" value="XXXXXX">
<input name="t" id="d1" value="XXXXXX">
<input name="t" id="d2" value="XXXXXX">
<input name="t" id="d3" value="XXXXXX">
<input name="t" id="d4" value="XXXXXX">

--------------------------------------------------------------


alert(document.getElementById("d1").value);

#25


你誤解了
我不是要得到層的value
而是要得到層里面對象的value
如果層里面的對象有多個,那你怎么辦,
所以還是應該把以下方法改進一下
alert(document.getElementById("d1").getElementsByName("t")[0].value);
但還是不知道怎么改

#26


要是你理解的那么簡單,我就不在這里浪費大家的時間了

#27


document.all可以么

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com