js 循环判断问题

JavaScript023

js 循环判断问题,第1张

// 按照你所说的,3种情况互斥,是只会成立一种情况的话,而你这样写,那么肯定会出现各种情况都交互存在了,例如当你的第一个值大于40的时候,之后应该就只显示大于等于40的了,而你的最后一个else if判断会导致 >=30 且 <40 的在循环中被显示出来,所以当然是错的。如果你确定你的Array中一定是多少个值的话,可以写死,为了简单,假设有3个值,可以如下:

<script type="text/javascript">

    // 既然你用了 jp[0] - jp[n] ,那也就不用在最外层循环了

    // 第一次判断,其中一个大于 40 ,则

    if(jp[0] >= 40 || jp[1] >=40 || jp[2] >=40){

        for(var i=0i<3i++){

            if(jp[i]>=40){

                document.getElementById("tz_"+jp[i]).style.display="block"

            }

        }

    }else if(jp[0]<30 && jp[1]<30 && jp[2]<30){

        // 这里是全部小于 30 的话,显示你的 id="ph" 的 div

        document.getElementById("ph").style.display = "block"

    }else{

        // 如果全部小于 40 且不全部小于 30 的话

        for(var i=0i<3i++){

            // 则把所有大于等于 30 的显示出来

            if(jp[i]>=30){

                document.getElementById("tz_"+jp[i]).style.display="block"

            }

        }

    }

</script>

// 当然,可以使用循环的方式,这样以后维护也好一点,循环判断代码如下:

<script type="text/javascript">

    var zhph = "00"

    var jp = new Array(27, 28, 23, 24)

    // gt40 判断是否有大于等于40 的,lt30 判断是否全部小于 30

    var gt40 = false, mi34 = false

    window.onload = function() {

        for (var zh in jp) {

            var value = jp[zh]

            // 如果有一个超过 40 ,则 gt40=true,直接可以 break

            if (value >= 40) {

                gt40 = true

                break

            } else {

                // 如果有 30<= x < 40 的,则 mi34 = true

                if (value >= 30) {

                    mi34 = true

                }

            }

        }

        if (gt40) {         // 如果有大于40的,则显示所有大于 40 的 div

            for (var zh in jp) {

                var value = jp[zh]

                if (value >= 40) {

                    var myid = "tz_" + value.toString()

                    if (document.getElementById(myid)) {

                        document.getElementById(myid).style.display = "block"

                    }

                }

            }

        } else if (!mi34) { // 如果不存在 30-40 的数,则是全部小于 30 的 div

            var myid = "tz_" + zhph

            if (document.getElementById(myid)) {

                document.getElementById(myid).style.display = "block"

            }

        } else {            // 否则,显示 30-40 的 div

            for (var zh in jp) {

                var value = jp[zh]

                if (value < 40 && value >= 30) {

                    var myid = "tz_" + value.toString()

                    if (document.getElementById(myid)) {

                        document.getElementById(myid).style.display = "block"

                    }

                }

            }

        }

    }

</script>

function show(name,parm){

if(name=="abcd"){//此处name的值不固定

name = name.replace("abcd","c002b561-7bba-40bd-b394-522faf1f10e2")

//parm参数是从另一个地方传过来的,而且不能更改,传过来的时候拼接着name,后面的值是字符串拼接类型的,而且值是不固定的,如:

var parm = "name="+name+"&RIQI="+RIQI+"&GUIJI="+GUIJI+"&JGLEIBIE="+JGLEIBIE+"&JGXZ="+JGXZ+"&CPLEIBIE="+CPLEIBIE+"

}

//--------------------------添加上下面的话----------------------------------

var num = parm.indexOf("&")//返回字符串中匹配子串的第一个字符的下标

var newparm= parm.substr(num) //截取起始下标为num到最后的字符串(你试一试我记得是num要是不对的话可能需要变为num+1)

alert(parm)

}