黑马程序员技术交流社区

标题: javaScript值比较大小的问题 [打印本页]

作者: 严海彬    时间: 2012-2-22 21:47
标题: javaScript值比较大小的问题
本帖最后由 严海彬 于 2012-2-27 15:04 编辑

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="/Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function getMax(arr) {
            this.maxnum = arr[0];
            for (var i = 1; i < arr.length; i++) {
                if (arr > this.maxnum) {
                    this.maxnum = arr;
                }
            }
            return this.maxnum;
        }

        function let() {
            if (document.getElementById("txt")) {
            var txtb = document.getElementById("txt");
            var arr1 = new Array();
                arr1 = txtb.value.toString().split(",");
                alert(getMax(arr1));
            }
        }
    </script>
</head>
<body>
    <input type="text" id="txt"  value="1,10,20,a,5,9,100" /><input type="button" onclick="let();" value="点击" />
    <script type="text/javascript">

    </script>
</body>
</html>



以上代码运行之后 取到的值是“a”,悲剧,这个判断的依据是什么呢? 难道是ascii码?
作者: 莫洪刚    时间: 2012-2-22 23:15
当 value="1,10,20,a,5,9,100"时,最大值是a
当 value="1,10,20,a,A,5,9,100"时,还是a
当 value="1,10,20,5,9,100"时,居然是9
当 value="1,10,20,a,A,?,5,9,100"时,居然是?号

现在我把let函数改变一下。
   function let() {
            if (document.getElementById("txt")) {
                var txtb = document.getElementById("txt");
                var arr1 = new Array();
                arr1 = txtb.value.toString().split(",");
             -----   alert(typeof arr1[0]);----
                alert(getMax(arr1));
            }
        }

当在let函数中执行到这里的时候   
alert(typeof arr1[0]);我们发现arr1[0]是string类型

现在我们改变一下 getMax函数
    function getMax(arr) {
            this.maxnum = arr[0];
            for (var i = 1; i < arr.length; i++) {
               ---- alert(typeof arr[i]);---
                if (arr[i] > this.maxnum) {
                    this.maxnum = arr[i];
                }
            }
            return this.maxnum;
        }
当我们函数再次执行到alert(typeof arr[i]);的时候发现,循环中全部是string类型。
所以答案很明确了ASCII码。
作者: saiyajin    时间: 2015-4-27 21:12
是严海彬老师吗




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2