比如要做个省份选择的控件,实现在select里填充省份。
一直以来我用的笨办法是在province.htm文件里实现它,然后在其他的test.htm文件里通过jquery动态的载入这个页面,但是这样做会出现的问题是当同一个页面多次载入province.htm时select的id会重复。在此请教各位大牛都是怎样在htm中自定义控件的?

解决方案 »

  1.   

    没人吗各位?
      
     或者说怎样在同一个页面内多次引入一个htm文件时保证里面的id不被影响?
      

  2.   


    没有啊,如果我这个控件里包含多个像div和a之类的基础控件,每一个都要生成id吗? 这样不是很麻烦?
      

  3.   

    既然是控件,可以到处放的,id当然不能写死.
    你可以写一个两段式的id, XXX:YYYY 这样的结构。
    控件最初只有YYYY这段的id,当放到某个container时 比如div的id是 XXX,那么就将控件内部的东西的id变成XXX:YYYY
      

  4.   


    这样的话,我在控件内部怎么用js调用基础控件呢,id还未生成啊。
      

  5.   

    应该该写一个initialize函数,控件内部的其他js应该在该运行函数后才能执行。
      

  6.   


    你看,我现在只知道用id精确的找到某个基础控件,如果id并不确定,我在内部怎样找到基础控件呢?
      

  7.   

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <style type="text/css">
            .selPro{ background-color:#8ADEFF; }
            .selPro2{ background-color:#A4C8EE; }
        </style>
        <script type="text/javascript">
            function BuildProvinceSelect(id,classStr,styleStr) {
                var str = "";
                str += "<select id='" + id + "' class='" + (typeof (classStr) == "undefined" ? "" : classStr)+ "' style='" + (typeof (styleStr) == "undefined" ? "" : styleStr) + "'>";
                str += "<option value='广东'>广东</option>";
                str += "<option value='广西'>广西</option>";
                str += "</select>";
                document.write(str);
            }
        </script>
    </head>
    <body>
        <script type="text/javascript">        BuildProvinceSelect("select1","selPro","width:200px;")</script>
        <script type="text/javascript">        BuildProvinceSelect("select2", "selPro2", "width:300px;")</script>
    </body>
    </html>
      

  8.   

    YYYY段id是确定的,只是XXX不确定,在调用initialize后,传入'XXX'给控件,控件里面的javascript找element时就可以这样 obj=document.getElementById(ContainerId+ComponentId)
      

  9.   

    把数据放在.json或者xml里,ajax请求过来之后生成select和其中的option,id神马的可要可不要 你都有了jquery .class不让你用吗?
      

  10.   

    自定义的控件不是在这里说句话就OK了
    所谓自定义的控件 比方说下拉框 我们可以做一个自己的下拉框 “text+图片”这种都是用js动态生成的 包括样式的配置 最后拼出最终的html标签 然后innHTML到一个div或其他容器中 这个控件就出来了
      

  11.   


    您好,关于“最后拼出最终的html标签 然后innHTML到一个div或其他容器中 这个控件就出来了”,这句话怎么讲呢?
      

  12.   


    我试过用iframe,但是用的时候整个iframe相当于一个页面,所有其他控件只能在这个iframe的大小范围内,如果我想在iframe以外显示一个弹出层就不可能。
      

  13.   


    您好,这样的话,同一个页面多次载入province.htm时select的class也会重复吧?我得避免呀
      

  14.   


    9楼的方法很好,可以用,让我受益匪浅。主要是我还想看看有没有什么方法能让html代码和js代码相分离的,顺便多向大家学习一点,集思广益嘛如果htm和js无法分离,我就用9楼的。非常感谢。。