繁体   English   中英

传递给JavaScript函数的整数数组

[英]Integer Arrays Passing To JavaScript Function

我在用Javascript获取的php中有一个数组。 这是我的PHP代码

$query = "SELECT SeatNum FROM `$busNum` WHERE AB = 1";
$runQuery = mysqli_query($con, $query);
$i = 0;
foreach($runQuery as $row)
{
    $availableSeats[$i++] = $row['SeatNum'];
}

在这里,我在javascript中获取此字符串

var getBookedSeats = <?php echo json_encode($availableSeats); ?>;
var bookedSeats =[];
for(var i =0 ; i <getBookedSeats.length ; i++){
 bookedSeats[i] = getBookedSeats[i];
}

该阵列也成功保存在bookedSeats中。 现在的问题是,当我使用该数组作为调用函数的参数时。 参数中没有任何内容。 即使没有范围问题。 这是我的功能看起来像:

 var init = function (reservedSeat) {
//code
}
init(bookedSeats);

初始化功能的实现是:

   var settings = {
            rows: 5,
            cols: 15,
            rowCssPrefix: 'row-',
            colCssPrefix: 'col-',
            seatWidth: 35,
            seatHeight: 35,
            seatCss: 'seat',
            selectedSeatCss: 'selectedSeat',
            selectingSeatCss: 'selectingSeat'
        };

        var init = function (reservedSeat) {
            var str = [], seatNo, className;
            for (i = 0; i < settings.rows; i++) {
                for (j = 0; j < settings.cols; j++) {
                    seatNo = (i + j * settings.rows + 1);
                    className = settings.seatCss + ' ' + settings.rowCssPrefix + i.toString() + ' ' + settings.colCssPrefix + j.toString();
                    if ($.isArray(reservedSeat) && $.inArray(seatNo, reservedSeat) != -1) {
                        className += ' ' + settings.selectedSeatCss;
                    }
                    str.push('<li class="' + className + '"' +
                              'style="top:' + (i * settings.seatHeight).toString() + 'px;left:' + (j * settings.seatWidth).toString() + 'px">' +
                              '<a title="' + seatNo + '">' + seatNo + '</a>' +
                              '</li>');
                }
            }
            $('#place').html(str.join(''));
        };

从评论看来,您的变量bookedSeats正在分配值。 但是,如果您的init()函数期望使用整数,则需要使用如下整数来构建bookedSeats数组:

for(var i =0 ; i <getBookedSeats.length ; i++){
 bookedSeats[i] = parseInt( getBookedSeats[i], 10 );
}

我不使用php,但我相信php的json_encode返回JSON格式的字符串。 这将导致您的JavaScript代码将字符串中的各个字符存储到bookSeats变量中。

您需要解析从php返回的字符串。 例如...

var getBookedSeats = JSON.parse(<?php echo json_encode($availableSeats); ?>);

似乎问题在于您正在尝试将数组值作为数字进行比较,并且当前将它们作为字符串进行比较。 要将它们转换为数字,您可以简单地使用:

bookedSeats = bookedSeats.map(Number) // iterate over each bookedSeats element and return its numeric value

与以下内容相同:

bookedSeats = bookedSeats.map(function(value){
    return Number(value);
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM