论坛首页 Web前端技术论坛

关于prototype中$F方法的小问题

浏览 5165 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-04  
<html>

<head>
<script src='prototype.js'></script>
<script language="javascript" type="text/javascript">
    function test(){
        alert($F('set1'))
    }  
</script>

<title></title>

</head>

<body>
    <select id='set1'>
        <option>choose</option>
        <option value='1'>a</option>
    </select>
    <input type='button' onclick='test()'/>
</body>

</html>

本以为会打出空,结果是choose,
后来在看源码时发现,$F在返回select元素的指时使用如下方法
optionValue: function(opt) {
    // extend element because hasAttribute may not be native
    return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
  }

因为我没有value属性,所以返回的是opt.text;
   发表时间:2007-10-15  
怯怯的问一下$f这个方法在firefox中为何总提示
element has no properties? 苦恼了很久~

prototype: version 1.5.0_rc0
Firefox: 2.0.0.7
0 请登录后投票
   发表时间:2007-10-15  
ls要是$F有问题,那就$("...").value如果还有问题,rpwt
0 请登录后投票
   发表时间:2007-10-15  
Prototype这样写是为了保证浏览器兼容性,在option标签中如果不显示写value属性的话,firefox默认是会赋值为文本节点的值的(这也是标准所规定的),但是ie不会。
0 请登录后投票
   发表时间:2008-08-30  
cowskin 写道
怯怯的问一下$f这个方法在firefox中为何总提示
element has no properties? 苦恼了很久~

prototype: version 1.5.0_rc0
Firefox: 2.0.0.7

很简单
js区分大小写
$F("")
而不是$F("ddd")
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics