2014-01-09 20 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

相关问题