`
fengpeng
  • 浏览: 99575 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用prototype操纵check box

    博客分类:
  • Ajax
阅读更多
关键字: prototype   prototype    

prototype中的$F()真是好用,但是在html中的checkbox是可多选的,prototype有没有给我们提供得到选中的checkbox的值的便利的方法呢
我翻了好久没找到,于是写了一个使用Enumerable操纵checkbox的例子

代码
  1. <script>  
  2.     function testSelect()   
  3.     {   
  4.         var chkbox = document.getElementsByName('slt');   
  5.         var nodes = $A(chkbox);   
  6.         var sltNodes = nodes.select(function(node)   
  7.         {   
  8.             return node.checked;   
  9.         });   
  10.         sltNodes.each(function(node)   
  11.         {   
  12.             alert(node.value);   
  13.         });   
  14.            
  15.     }   
  16. </script>  
  17.     <input type="checkbox" name="slt" value="1"/> 1<br/>  
  18.     <input type="checkbox" name="slt" value="2"/> 2<br/>  
  19.     <input type="checkbox" name="slt" value="3" checked="true"/> 3<br/>  
  20.     <input type=button value="test select" onclick="testSelect()">     
<script>render_code();</script>
魔法发生在 $A,如果去掉
代码
  1. var nodes = $A(chkbox);   
<script>render_code();</script>
改成
代码
  1. var chkbox = document.getElementsByName('slt');   
  2.   
  3. var sltNodes = chkbox.select(function(node)   
  4. {   
  5.     return node.checked;   
  6. });   
  7. sltNodes.each(function(node)   
  8. {   
  9.     alert(node.value);   
  10. });   
<script>render_code();</script>
那么js就会报错,说chkbox没有select这个方法,看了一下$A的源码,
代码
  1. var $A = Array.from = function(iterable) {   
  2.   if (!iterable) return [];   
  3.   if (iterable.toArray) {   
  4.     return iterable.toArray();   
  5.   } else {   
  6.     var results = [];   
  7.     for (var i = 0; i < iterable.length; i++)   
  8.       results.push(iterable[i]);   
  9.     return results;   
  10.   }   
  11. }   
  12.   
  13. Object.extend(Array.prototype, Enumerable);   
<script>render_code();</script>
Array.from在哪里?没找到?那位大人能够解释一下,$A()的作用?
分享到:
评论
1 楼 tudou721 2008-12-27  
应该是prototype扩展的问题吧

像这个例子:
var paras = $A(document.getElementsByTagName('p'));
paras.each(Element.hide);
$(paras.last()).show();

这里的Element.hide就必须使用
因为$A()并不执行DOM扩展的动作
做hide这个实例方法,以确保我们的目标元素都已经被扩展了。

那么select也应该是这样的

相关推荐

Global site tag (gtag.js) - Google Analytics