0

我的脚本有问题。当我从下拉列表中选择加拿大时,它应该添加一个文本框,但它没有添加任何内容。

<style>
          #color {display:none;}
       </style>


       <script>
          (function(d){
             var options={
                val:'Canada',
                sel_id:'country',
                hid_id:'color'
             };
             var browser={
                modern:function(){
                   var method=null;
                   if(d.addEventListener) {
                      method=['DOMContentLoaded',true];
                   } else if(d.attachEvent) {
                      method=['readystatechange',false];
                   }
                   return(method);
                },
                addEvent:function(elem,event,func){
                   if(this.modern()[1]) {
                      elem.addEventListener(event,func,false);
                   } else {
                      elem.attachEvent('on'+event,func);
                   }
                }
             };
             var load=browser.modern()[0];
             var modern=browser.modern()[1];
             var init=function(){
                if((!modern && d.readyState=='complete') || modern) {
                   var select=d.getElementById(options.sel_id);
                   var input=d.getElementById(options.hid_id);
                   browser.addEvent(select,'change',function(){
                      var val=this.value;
                      var display=(val==options.val) ? 'block' : 'none';
                      input.style.display=display;
                   });
                }
             };
             browser.addEvent(d,load,init);
          })(document);
       </script>

这是javascript函数,下面是html代码

<tr> 
                                            <td height="22" class="bodytxt" id="color">
                                                <font size="2" face="Geneva, Arial, Helvetica, sans-serif">Date of Birth </font>
                                            </td>

                                            <td height="22" class="bodytxt" id="color">
                                                <input type="text" size="20"  name="color" value="<?=$_REQUEST['dob']?>" />


</td></tr>

我面临的问题可以在这里现场看到....

http://www.sunno.com/medical/clients/test.html

4

1 回答 1

0

您的 html 无效,您不应该对多个元素使用相同的 id。当您使用document.getElementById()它时,只会找到其中一个(第一个,在大多数浏览器中) - 请注意,该方法是获取元素(单数),而不是获取元素(复数)...

这就是为什么在您的演示页面中出现标签而不是文本框的原因(与您在问题“但它没有添加任何东西”中的陈述相反)。

为什么不将 移动id="color"<tr>包含这两个项目的元素,以便显示或隐藏整行?

于 2012-12-09T11:18:30.573 回答