本帖最后由 aamxy123 于 2010-09-13 14:31:38 编辑

解决方案 »

  1.   

    市面上好像没有专门的书,上CSDN的跨浏览器开发专区去学学吧
    或者,可以自己看看 w3help.org
      

  2.   

    楼主alert(js_verify(txtIp.value))有问题。首先应该给<input type="text" name="txtIp" value="255.222.33.111" />一个id为txtIp.value,才能这样用!
      

  3.   

    楼主写js,最好遵循W3C的标准去写
    1、首先 这句话<script type="text/livescript">就写错了,应该是<script type="text/javascript">代码修改好了,如下<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <script type="text/javascript">
    /* isNumeric - 判断一个字符串中的内容是否全是数字字符,如果全是返回true,
    否则,返回false*/
    function isNumeric(str)
    {
            if (str.length == 0)
            {
                return false;
            }
            for(var i=0; i<str.length; i++)
            {
                /*字符串之间也可以比较大小,大小按首字符的编码值决定,如果首字符相等,则比较第二个字符,依次往后逐个比较。*/
                if (str.charAt(i)<"0" || str.charAt(i)>"9")
                {
                    return false;
                }
            }
            return true;
    }/* js_verify - 完全用JavaScript程序代码来判断一个字符串是否是合法的IP地址,
    如果是返回true,否则,返回false。*/
    function js_verify(addr)
    {
    alert(addr);
        //将ip地址的各段保存到一个数组中。
        var part_addr = addr.split(".");
        if (part_addr.length != 4)
        {
            return false;
        }
        else
        {
            var part;
            //将part_addr中的元素索引号逐个赋值给part
            for (part in part_addr)
            {
                if(isNumeric(part_addr[part]))
                {
                    /*如果字符串与数值比较,字符串将先转换成数值后再参与比较。即使在下面的语句中不调用parseInt方法对part_addr[part]进行转换,直接用part_addr[part]与0比较,也是可以的。*/
                    if (parseInt(part_addr[part])<0 || parseInt(part_addr[part])>255)
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
        }
        return true;
    }/* jsreg_verify -结合JavaScript程序代码和正则表达式模式来判断一个字符串是否是合法的IP地址,如果是则返回true,否则,返回false。*/
    function jsreg_verify(addr)
    {
        var reg = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
        if (reg.exec(addr) != null)
        {
            //下面直接用符串与数值比较,字符串将先转换成数值
            if (RegExp.$1<0 || RegExp.$1>255) return false;
            if (RegExp.$2<0 || RegExp.$2>255) return false; 
            if (RegExp.$3<0 || RegExp.$3>255) return false; 
            if (RegExp.$4<0 || RegExp.$4>255) return false;  
        }
        else
        {
            return false;
        } 
        return true;
    }/* reg_verify - 完全用正则表达式来判断一个字符串是否是合法的IP地址,
    如果是则返回true,否则,返回false。*/
    function reg_verify(addr)
    {
        var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
        if(addr.match(reg))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    </script>
    <p>输入要校验的ip地址:<input type="text" id="txtIp" value="255.222.33.111" /><br />
    <input type="button" id="btn1" value="测试JavaScript验证" 
            onclick="alert(js_verify(document.getElementById('txtIp').value))" /><br />
    <input type="button" id="btn1" value="测试JavaScript和正则表示式验证" 
            onclick="alert(jsreg_verify(document.getElementById('txtIp').value))" /><br />
    <input type="button" id="btn1" value="测试正则表示式验证测试" 
            onclick="alert(reg_verify(document.getElementById('txtIp').value))" /><br /></p></body>
    </html>
      

  4.   


    livescript是DW生成没点好,那个 你是把input标签的name换成id了吧,不换的话 直接用getElementsByName()方法怎么无效果呢??手册上说 getElementsByName()也是支持W3C的