首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

求懂JS的帮忙看看数组的格式有关问题

2014-04-29 
求懂JS的帮忙看看数组的格式问题

求懂JS的帮忙看看数组的格式问题

 <?php
$add_result = mysql_query("select * from hzl_type");
$add_result_num = mysql_num_rows($add_result);
echo '<script type="text/javascript">var name_array,parent_array,id_array;name_array=new Array

();parent_array=new Array();id_array=new Array();';
for($i = 0; $i < $add_result_num; $i++){
    mysql_data_seek($add_result,$i);
    $add_result_information = mysql_fetch_array($add_result);
    echo 'id_array['.$i.']='.$add_result_information['typeid'].';';
    echo 'name_array['.$i.']='.$add_result_information['typename'].';';
    echo 'parent_array['.$i.']='.$add_result_information['parentid'].';';
}
echo '</script>';
?>

<script type="text/javascript">
//*测试数据 没问题  但是上面数据库读出就有问题,没法载如三级联动 那个数组有什么问题吗
var id_array,name_array,parent_array;
id_array = new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14);
name_array = new Array("湖北","广东","黄冈","武汉","东莞","虎门","浠水","蕲春","武昌","汉阳","东一","东

二","虎一","虎二");
parent_array = new Array(0,0,1,1,2,2,3,3,4,4,5,5,6,6);
 
/****三级版****/
function create_select(parent_id,sel_id,what_sel){
    var new_option;
    if(parent_id === ""){
        return;
    }
    if(what_sel == 1){
        document.getElementById("mid_sel").options.length = 0;
        document.getElementById("bot_sel").options.length = 0;
        new_option = new Option("请选择地区","");
        document.getElementById("mid_sel").options.add(new_option);
        new_option = new Option("请选择县市","");
        document.getElementById("bot_sel").options.add(new_option);
    }
    if(what_sel == 2){
        document.getElementById("bot_sel").options.length = 0;
        new_option = new Option("请选择县市","");
        document.getElementById("bot_sel").options.add(new_option);
    }
    for(var j = 0; j < id_array.length; j++){
        if(parent_array[j] == parent_id){
            new_option = new Option(name_array[j],id_array[j]);
            document.getElementById(sel_id).options.add(new_option);
        }
    }
}
/****无限级版****/
//获取上一级id
function get_top_id(the_id){
    for(var i = 0; i < id_array.length; i++){
        if(the_id == id_array[i]){
            return parent_array[i];
            break;
        }
    }
}
//获取下一级id
function get_bottom_id(the_id){
    var c_array = new Array();
    var n = 0;
    for(var i = 0; i < parent_array.length; i++){
        if(the_id == parent_array[i]){
            c_array[n] = id_array[i];
            n++;
        }
    }
    if(n > 0){
        return c_array;
    }else{
        return false;
    }
}
//生成下拉菜单代码
function create_sel(the_id){
    the_id = Number(the_id);
    var node_array,option_array,sel_name,head_code,last_code,sel_code;
    document.getElementById("set_sel").innerHTML = '';
    var node_array = new Array();
    var n = 0,loop_go_on = the_id;
    while(loop_go_on != 0){
        node_array[n] = get_top_id(loop_go_on);
        loop_go_on = node_array[n];
        n++;
    }
    node_array.unshift(the_id);
    head_code = '<form method="post" action="">';
    last_code = '</form>';


    sel_code  = '';
    for(var k = node_array.length - 1; k >= 0; k--){
        option_array = get_bottom_id(node_array[k]);
        if(option_array !== false){
            sel_name  = 'select' + node_array[k];
            sel_code += '<select name="' + sel_name + '" onchange="create_sel(this.value)"><option 

value="">请选择</option>';
            for(var l = 0; l < option_array.length; l++){
                for(var m = 0; m < id_array.length; m++){
                    if(option_array[l] == id_array[m]){
                        if(id_array[m] == node_array[k - 1]){
                            sel_code += '<option value=' + id_array[m] + ' selected>' + name_array[m] + 

'</option>';
                        }else{
                            sel_code += '<option value=' + id_array[m] + '>' + name_array[m] + 

'</option>';
                        }
                        break;
                    }
                }
            }
            sel_code += '</select>';
        }
    }
    document.getElementById("set_sel").innerHTML = head_code + sel_code + last_code;
}
</script>

    <form name="my_form" method="post" action="create_sel.php">
    <select id="top_sel" name="top_sel" onChange="create_select(this.value,'mid_sel',1)">
    <option value="">请选择省份</option>
    </select>
    <select id="mid_sel" name="mid_sel" onChange="create_select(this.value,'bot_sel',2)">
    <option value="">请选择地区</option>
    </select>
    <select id="bot_sel" name="bot_sel">
    <option value="">请选择县市</option>
    </select>
    </form>
    <div id="set_sel"></div>




//这个是数据库里面打印出来的数组 求JS高手帮忙看看 没学过JS 悲剧
<script type="text/javascript">var name_array,parent_array,id_array;name_array=new Array

();parent_array=new Array();id_array=new Array();id_array[0]=4;name_array[0]=EVO;parent_array[0]

=3;id_array[1]=13;name_array[1]=MITSUBISHI;parent_array[1]=0;id_array[2]=5;name_array[2]

=2005;parent_array[2]=4;id_array[3]=6;name_array[3]=2008;parent_array[3]=4;id_array[4]=12;name_array[4]

=Toyota;parent_array[4]=0;id_array[5]=8;name_array[5]=FT86;parent_array[5]=7;id_array[6]=9;name_array

[6]=GT86;parent_array[6]=7;id_array[7]=10;name_array[7]=2013;parent_array[7]=9;id_array[8]

=11;name_array[8]=2009;parent_array[8]=8;id_array[9]=14;name_array[9]=GT86;parent_array[9]=12;id_array

[10]=15;name_array[10]=EVO;parent_array[10]=13;id_array[11]=16;name_array[11]=carola;parent_array[11]

=12;id_array[12]=18;name_array[12]=20135;parent_array[12]=15;id_array[13]=20;name_array[13]

=5552;parent_array[13]=14;id_array[14]=21;name_array[14]=33655;parent_array[14]=16;id_array[15]

=23;name_array[15]=2005;parent_array[15]=15;</script>
<script type="text/javascript">



[解决办法]
不不是少了引号吗?
您的测试数据是
name_array = new Array("湖北","广东","黄冈","武汉","东莞","虎门","浠水","蕲春","武昌","汉阳","东一","东二","虎一","虎二");
而你 php 是这样写的
echo 'name_array['.$i.']='.$add_result_information['typename'].';';
假定 $add_result_information['typename'] 的值为 xxxx $i 的值为 10
实际输出的不就是
name_array[10]=xxxx;
吗?
那个 xxxx 不是数字,就被 js 当做变量处理了,这就必然出错了!
输出的要是这样才对 name_array[10]='xxxx';

其实 php 提供了很好的书写手段,为何不用一下呢?
echo "name_array[$i]='$add_result_information[typename]';";
这样写,是不是清晰了许多?


[解决办法]
2楼正解。。。  把一些好的编码习惯养成了。。
很多bug根本就不会遇到

热点排行