2011-03-18 102 views
0

我有一個div標籤如下:如何獲取Node的id名稱?

<div id="DataEntryForm" style="position:absolute; left:100px;top:175px;width:350px; z-index:2;background-color:yellow; visibility:hidden;border-top-color: black;"> 
    <table id="DataEntryFormTable" style=" width:100%" style="margin-top: -50px;"> 
     <tr><td>&nbsp;Build Name</td><td> <input type="text" id="BuildName" name="BuildName" value="" /></td></tr> 
     <tr><td>&nbsp;Build Description</td><td> <input type="text" id="BuildDesc" name="BuildDesc" value="" /></td></tr> 
     <tr><td>&nbsp;Software Details</td><td> <input type="text" id="SoftwareDetail" name="SoftwareDetail" value="" /> </td></tr> 
     <tr><td>&nbsp;Hardware Details</td><td> <input type="text" id="HardwareDetail" name="HardwareDetail" value="" /> </td></tr><br> 
     <tr><td>&nbsp;</td></tr> 
     <tr> 
      <td> 
       <input type="button" value="Save" onclick="saveRecord()" /></td> 
      <td> <input type="button" value="Cancel" onclick="cancelOperation()"/></td> 
     </tr> 
     <br> 
    </table> 
</div> 

我想從數據庫中輸入類型文本負載值。所以,我需要獲取每個節點的id,以便與我的json值和節點id相匹配,並將值分配給它。我正在嘗試用以下來實現這一點。但是,我無法獲得id值。任何人,請幫我解決這個問題。謝謝..

var nodes = deform.childNodes; 
index =0; 

// Load the first record in the collection. 
// It is expected to have only one object in JS Object collection 
var dbRecord= dbRecords[0]; 

while (index < nodes.length) 
{ 
    if(nodes[index].type=="text") 
    { 
     nodes[index].value = dbRecord[nodes[index].id]; 
    } 

    index++; 
} 
+0

您能向我們展示一個現場示例或至少是dbRecord的內容嗎? – bluefoot 2011-03-18 04:19:36

+0

這是dbRecord內容 - [{「HardwareDetail」:「[B」,「BuildDesc」:「Testing1」,「BuildID」:「BL002」,「BuildName」:「Second Name」,「SoftwareDetail」:「ss 「}] – Nila 2011-03-18 04:37:55

+0

您可能想改爲使用for循環。或者說'while(index ++ Kayla 2011-03-18 04:52:41

回答

1

id是正確的屬性。問題是您沒有檢索您試圖從表中檢索的節點。使用.children()或.childNodes()只能獲得元素的直接子元素,因此您需要深入到表格中以訪問您正在填充的文本輸入。另外,如果你想使用jQuery的,單一的選擇可以做的伎倆:

$("#DataEntryFormTable input[type='text']")

如果你不使用jQuery,我會用。孩子()遞歸地找到你要找的元素對於。

編輯:此外,請務必包括括號調用函數時,這樣 var nodes = deform.childNodes; 將再次 var nodes = deform.childNodes();

編輯: ...我沒有看到你所提供的數據。由於您的JSON數據中包含您需要的ID,因此您可以使用這些ID直接查找元素。試試這個:

dbRecord= [{"HardwareDetail":"[B","BuildDesc":"Testing1","BuildID":"BL002","BuildName":"Se­cond Name","SoftwareDetail":"ss"}]; 
record = dbRecord[0]; 
for (attr in record){ 
    el = document.getElementById(attr); 
    if (el) 
     document.getElementById(attr).value = record[attr]; 
    else 
     console.debug('no HTML element with ID ' + attr); 
} 

我不認爲在某些瀏覽器console.debug工程(IE?),所以你要當你完成測試採取的那部分。

+0

這個循環是無限的。我無法執行這些代碼。如何打破這個循環。爲什麼它是無限的? – Nila 2011-03-18 05:27:04

+0

它不應該是無限的,但是你的dbRecord在數組中包含一個對象,並且我寫了我的代碼,就好像數組不在那裏一樣,或者好像你發佈的數據是dbRecords而不是dbRecord。在迭代屬性之前,可能需要訪問數組的第一個元素。我會更新代碼來澄清。 – undefined 2011-03-18 05:47:42

+0

好的。謝謝。現在我懂了。原因是節點索引循環仍然存在。這就是爲什麼循環無限。現在它正在工作。 – Nila 2011-03-18 06:17:03

相關問題