2014-01-09 52 views
0

我有點問題來獲取DOM元素的值時出現問題。元素具有'class'屬性集。我的代碼看起來像這樣。當點擊和元素時,輸入到var的原型getValue

document.observe('dom:loaded', function() { 
    $$('.sepetle').invoke('observe', 'click', function(element){ 
     var giftDetailID = element.down('input.gldID').getValue(); 

    }); 
}); 

在這裏,我想通過點擊a.sepetle來獲得具有類.gldID的輸入值。我的輸入是「一」元素

 <tr id="<?=$row->GLD_ID?>">    
     <td><?=$row->ProdName?></td> 
     <td><?=$row->ProdPrice?></td>         
     <td> 
      <a class="sepetle" onclick="SepeteEkleDayi('<?=$row->ProdID?>');" href="javascript:;">Sepete At</a> 
      <input class="gldID" type="hidden" value="<?=$row->GLD_ID?>" />      
     </td> 
    </tr> 

回答

0

down()方法進入「下降」的DOM子鏈內 - 在這種情況下<a><input>是兄弟,所以<input>不會從<a>下來。根據您計劃放入這些表格單元格的情況,您可以採取幾種方法。

如果這僅僅是<a><input>那麼這將工作

document.observe('dom:loaded', function() { 
    $$('.sepetle').invoke('observe', 'click', function(element){ 
     var giftDetailID = element.siblings()[0].getValue(); 
    }); 
}); 

否則我會做這樣更靈活

document.observe('dom:loaded', function() { 
    $$('.sepetle').invoke('observe', 'click', function(element){ 
     var giftDetailID = element.up('td').down('input.gldID').getValue(); 

    }); 
}); 
+0

感謝您的關聯 – Mesut

0

還有next()這可能會有幫助。如果您使用1.7,也可以使用on()函數。 (使用on的一點是,你只能創建一個監聽整個頁面,而不是每個元素之一。)

document.on('click', '.sepetle', function(evt, elm){ 
    evt.stop(); 
    var giftDetailId = $F(elm.next('input')); 

}); 

Event.stop(EVT)將阻止發生的點擊,所以你不需要在您的HTML中使用javascript:;網址。提供一個能夠複製JS輸出的實際URL,而不是這些不可抓取的僞造URL是更好的形式。 (當然,除非你正在做一些破壞性的點擊操作,比如DELETE。)

你也不需要document.observe('dom:loaded')包裝on() - 另一個勝利!

+0

感謝您的幫助 – Mesut

相關問題