<?php
$flash_page_id_con = array(); $flash_page_query = "select p.products_id,p.products_image,pd.products_name from " . TABLE_PRODUCTS ." p, ". TABLE_PRODUCTS_DESCRIPTION . " pd where p.`products_id`=pd.`products_id` AND master_categories_id = " . zen_get_products_category_id($products_id);
$flash_page = $db->Execute($flash_page_query);
while(!$flash_page->EOF){
$flash_page_id_con[] = $flash_page->fields['products_id'];
$flash_page->MoveNext();
}
$flash_page_id = implode(",", $flash_page_id_con);
?>
<script>
var productID = new Array();
productID = [<?php echo $flash_page_id;?>];
</script>然后后面我用到productID这个数组,当alert(productID[n_page]);(这里npage为不大于最大下标的一个数)显示为未定义,看源码productID是这样的productID = [748,745,747,749,750,751,752,753,755,756,758,759,760,761,762,763,764,765,766,767,768,769,770,780,781,782,783,784,785,795,796,797,798,799,800,801,802,803,804,806,807];
请问这是什么问题?应该怎么解决?

解决方案 »

  1.   

    数组没错,问题可能在n_page,alert(n_page) 看下是什么?
      

  2.   

    再alert(productID);看看
    如果没问题再alert(productID.length);看看
    n_page要大于等于0小于productID.length
      

  3.   

    alert(productID)为空,什么都不显示
      

  4.   

    接前面代码
    <script type="text/javascript">
        page_go('recent_flash_small','8', productCurrent, productTotal, '<?php echo $_GET['products_id']?>');
    </script>函数是这样的
    function loadImage(objId,urls){
    var loader = new ImageLoader(urls);
    loader.loadEvent = function(url){
     obj = $(objId);
     obj.src = url;
    }
    loader.load();
    }function rewrite_url(pname , pid){
    if(pid == null || pid == "undefined" ) {return ""};
    var re = /[^a-zA-Z0-9]/ig;
    var url = "";
    if(FRIENDLY_URLS != null && FRIENDLY_URLS == 'true'){
    url = baseURL + pname.replace(re,"-") + "_p" + pid + ".html";
    }
    else{
    url = linkURL+pid;
    }
    return url;
    }
    /////////////////
    /*the li scroll*/
    function page_go(id,num, c,t,cid){
    var Prev = id + "Prev";
    var Next = id + "Next";
    var pageId = id + "Page";
    var Page = 0;
    var currentPage = 1;
    var PageNumber = Math.ceil(t/num);
    var activeClick = true;
    var gopage = 0;
        alert(pageId);
    if(num>t){activeClick = false;}
    if(c >= num){
    if(t!=null){
    gopage = Math.ceil(c/num);
    if(c % num == 0) gopage++; 
    }
    updateProduct('goto', gopage);
    }
    function updateProduct(type, gopage) {
    if(type=='pre') {Page -= parseInt(num);currentPage--};
    if(type=='next') {Page += parseInt(num);currentPage++};
    if(type=='goto' && gopage != null) {Page = (gopage-1) * num ; currentPage = gopage;}
    alert(Page);
    if(Page<0) {
    Page=num*(PageNumber-1);
    currentPage=PageNumber;
    }
    if(Page>=t) {
    Page=0;
    currentPage=1;
    }
    $(pageId).innerHTML = currentPage +'/'+PageNumber;
    alert($(pageId).innerHTML);
    for(i=0;i<num;i++){
    alert(i);
    n_page = i + Page;
    $('cell_price'+i).innerHTML=productPrice[n_page];
    $('cell_link'+i).href = rewrite_url(productName[n_page], productID[n_page]);
    $('cell_link'+i).title = productName[n_page];
    alert(n_page);
    alert(productID);
    alert(productID[n_page]);
    alert(productID.length);
    $('li'+i).style.display='block';
    if(productID[n_page] == null){
    $('li'+i).style.display='none';
    continue;
    }
    if(num==4)$('cell_img'+i).src=baseURL+"images/root/loading_img_b.gif";
    if(num==8)$('cell_img'+i).src=baseURL+"images/root/loading_img_s.gif";
    $('cell_img'+i).alt=productName[n_page];
    $('cell_img'+i).title=productName[n_page];
    loadImage('cell_img'+i,imgURL+productIMG[n_page]);
    if(cid != null){
    if(cid == productID[n_page]){
    $('cell_img'+i).className = 'allborder';
    }
    else{
    $('cell_img'+i).className = '';
    }
    }
    }
    alert(2222);
    } $(pageId).innerHTML = currentPage +'/'+PageNumber;
    $(Prev).onclick = function () {
    if(!activeClick) return false;
    updateProduct('pre');
    }
    $(Next).onclick = function () {
    if(!activeClick) return false;
    updateProduct('next');
    }
    }
      

  5.   

    前面代码不全,我重发下补全啊
    <div class="fl relative pad_1em" id="product_flash_page">
    <span id="recent_flash_smallPrev" class="recent_flash_prev" title="Back"></span>
    <span id="recent_flash_smallNext" class="recent_flash_next" title="Next"></span><ul class="margin_t max_flash_width" id="recent_flash_small"><?php
    $flash_page_id_con = array();
    $flash_page_images_con = array();
    $flash_page_price_con = array();
    $flash_page_name_con = array(); $flash_page_query = "select p.products_id,p.products_image,pd.products_name from " . TABLE_PRODUCTS ." p, ". TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id=pd.products_id AND products_status='1' AND master_categories_id = " . zen_get_products_category_id($products_id);
    $flash_page = $db->Execute($flash_page_query);
    while(!$flash_page->EOF){
    $flash_page_items[] = $flash_page->fields;
    $flash_page_id_con[] = $flash_page->fields['products_id'];
    $flash_page_images_src = is_int(strpos($flash_page->fields['products_image'],','))? substr($flash_page->fields['products_image'],0,strpos($flash_page->fields['products_image'],',')):$flash_page->fields['products_image'];
    $flash_page_images_con[] = '"'.(zen_not_null($flash_page->fields['products_image']) ? $flash_page_images_src : PRODUCTS_IMAGE_NO_IMAGE ).'"';
    $flash_page_price_con[] = '"'.$currencies->display_price(zen_get_products_base_price($flash_page->fields['products_id']),zen_get_tax_rate($product_check->fields['products_tax_class_id'])).'"';
    $flash_page_name_con[] = '"'.zen_output_string(zen_get_products_name($flash_page->fields['products_id'])).'"';
    $flash_page->MoveNext();
    }

    $flash_page_id = implode(",", $flash_page_id_con);
    $flash_page_images = implode(",", $flash_page_images_con);
    $flash_page_price = implode(",", $flash_page_price_con);
    $flash_page_name = implode(",", $flash_page_name_con);

    $flash_page_display_num = ($flash_page->RecordCount()< 8 )? $flash_page->RecordCount(): 8;
    ?>
    <?php for($i = 0; $i< $flash_page_display_num ; $i++){?>
    <li id="li<?php echo $i;?>" style=" display:block; float:left; width:95px; list-style:none;">
    <a class="ih" id="cell_link<?php echo $i;?>" href="<?php echo zen_href_link(zen_get_info_page($flash_page_items[$i]['products_id']), 'products_id=' . $flash_page_items[$i]['products_id']);?>"><?php echo zen_image_OLD('../'.DIR_WS_IMAGES.$flash_page_items[$i]['products_image'],SEO_COMMON_KEYWORDS.' '.$flash_page_items[$i]['products_name'],79,79,'id="cell_img'.$i.'" class="'.(($flash_page_items[$i]['products_id'] == $_GET['products_id']) ? 'allborder':'').'"');?></a><p><strong id="cell_price<?php echo $i?>" class="red"><?php echo $currencies->display_price((zen_get_products_base_price($flash_page_items[$i]['products_id']) == 0 ? zen_get_products_sample_price($flash_page_items[$i]['products_id']): zen_get_products_base_price($flash_page_items[$i]['products_id'])),zen_get_tax_rate($product_check->fields['products_tax_class_id'])); ?></strong></p>
    </li>
    <?php
    //print_r($flash_page_items[$i]);
    }
    ?>
    </ul>
    </div>
    <script type="text/javascript">
    var productTotal = <?php echo intval($flash_page->RecordCount());?>;
    var productCurrent = <?php echo intval(array_search($_GET['products_id'],$flash_page_id_con));?>;
    var productID = new Array();
    var productPrice  = new Array();
    var productIMG  = new Array();
    var productName  = new Array();
    var imgURL = baseURL+'images/';
    var linkURL = baseURL+"index.php?main_page=product_info&products_id=";
    var productSourcePrice = null;
    var productSubName = null;
    var productName = null;
    <?php ?>
    var productFlg = null;
    productID = [<?php echo $flash_page_id;?>];
    productPrice = [<?php echo $flash_page_price;?>];
    productIMG = [<?php echo $flash_page_images;?>];
    productName = [<?php echo $flash_page_name;?>];
    </script>
      

  6.   

    上面的javascript代码查看源码内容如下:
    <script type="text/javascript"> 
    var productTotal = 41;
    var productCurrent = 9;
    var productID = new Array();
    var productPrice  = new Array();
    var productIMG  = new Array();
    var productName  = new Array();
    var imgURL = baseURL+'images/';
    var linkURL = baseURL+"index.php?main_page=product_info&products_id=";
    var productSourcePrice = null;
    var productSubName = null;
    var productName = null;
    var productFlg = null;
    productID = [748,745,747,749,750,751,752,753,755,756,758,759,760,761,762,763,764,765,766,767,768,769,770,780,781,782,783,784,785,795,796,797,798,799,800,801,802,803,804,806,807];
    productPrice = ["$94.27","$95.43","$94.27","$95.43","$95.43","$95.43","$94.27","$94.27","$93.43","$96.24","$95.43","$94.27","$95.43","$94.27","$95.43","$94.27","$94.27","$95.43","$95.43","$95.43","$94.27","$94.27","$94.27","$95.43","$95.43","$94.27","$94.27","$94.27","$94.27","$94.27","$95.43","$95.43","$95.43","$98.57","$95.43","$95.43","$97.76","$95.43","$95.43","$95.43","$95.43"];
    productIMG = ["dresses/BN003.jpg","dresses/BN001.jpg","dresses/BN002.jpg","dresses/BN004.jpg","dresses/BN005.jpg","dresses/BN007.jpg","dresses/BN008.jpg","dresses/BN006.jpg","dresses/BN009.jpg","dresses/BN010.jpg","dresses/BN011.jpg","dresses/BN012.jpg","dresses/BN013.jpg","dresses/BN014.jpg","dresses/BN015.jpg","dresses/BN016.jpg","dresses/BN017.jpg","dresses/BN018.jpg","dresses/BN020.jpg","dresses/BN019.jpg","dresses/BN021.jpg","dresses/BN022.jpg","dresses/BN023.jpg","dresses/BN025.jpg","dresses/BN024.jpg","dresses/BN026.jpg","dresses/BN027.jpg","dresses/BN028.jpg","dresses/BN029.jpg","dresses/BN030.jpg","dresses/BN031.jpg","dresses/BN032.jpg","dresses/BN033.jpg","dresses/BN034.jpg","dresses/BN035.jpg","dresses/BN036.jpg","dresses/BN037.jpg","dresses/BN038.jpg","dresses/BN039.jpg","dresses/BN041.jpg","dresses/BN042.jpg"];
    productName = ["bridesmaid dress style:VPBN003","bridesmaid dress style:VPBN001","bridesmaid dress style:VPBN002","bridesmaid dress style:VPBN004","bridesmaid dress style:VPBN005","bridesmaid dress style:VPBN007","bridesmaid dress style:VPBN008","bridesmaid dress style:VPBN006","bridesmaid dress style:VPBN009","bridesmaid dress style:VPBN010","bridesmaid dress style:VPBN011","bridesmaid dress style:VPBN012","bridesmaid dress style:VPBN013","bridesmaid dress style:VPBN014","bridesmaid dress style:VPBN015","bridesmaid dress style:VPBN016","bridesmaid dress style:VPBN017","bridesmaid dress style:VPBN018","bridesmaid dress style:VPBN020","bridesmaid dress style:VPBN019","bridesmaid dress style:VPBN021","bridesmaid dress style:VPBN022","bridesmaid dress style:VPBN023","bridesmaid dress style:VPBN025","bridesmaid dress style:VPBN024","bridesmaid dress style:VPBN026","bridesmaid dress style:VPBN027","bridesmaid dress style:VPBN028","bridesmaid dress style:VPBN029","bridesmaid dress style:VPBN030","bridesmaid dress style:VPBN031","bridesmaid dress style:VPBN032","bridesmaid dress style:VPBN033","bridesmaid dress style:VPBN034","bridesmaid dress style:VPBN035","bridesmaid dress style:VPBN036","bridesmaid dress style:VPBN037","bridesmaid dress style:VPBN038","bridesmaid dress style:VPBN039","bridesmaid dress style:VPBN041","bridesmaid dress style:VPBN042"];
    </script> 
    <script type="text/javascript">
        page_go('recent_flash_small','8', productCurrent, productTotal, '756');
    </script>
      

  7.   

    var productID = new Array(); 
    productID = [ <?php echo $flash_page_id;?>]; 
    alert(productID);//在这里alert看看
      

  8.   

    加载页面的时候这里没有弹出窗口,看不到alert的东西
      

  9.   

    var imgURL = baseURL+'images/'; //baseURL是什么东东?原因就出在这儿了,baseURL未定义呀
      

  10.   

    改过后数组有值了,谢谢。另一个问题:$('cell_link'+i).title = productName[n_page];
    这里的赋值,后面的alert了值是对的,但是alert前面那个就没有输出,为什么?
      

  11.   

    我执行上述代码的时候在这里有问题
    for(i=0;i<num;i++){
    alert(i);
    n_page = i + Page;
    alert(n_page);
    $('cell_price'+i).innerHTML=productPrice[n_page];
    $('cell_link'+i).href = rewrite_url(productName[n_page], productID[n_page]);
    $('cell_link'+i).title = productName[n_page];
    $('li'+i).style.display='block';
    alert(n_page);
    if(productID[n_page] == null){
    $('li'+i).style.display='none';
    continue;
    }
    if(num==4)$('cell_img'+i).src=baseURL+"images/root/loading_img_b.gif";
    if(num==8)$('cell_img'+i).src=baseURL+"images/root/loading_img_s.gif";
    $('cell_img'+i).alt=productName[n_page];
    $('cell_img'+i).title=productName[n_page];
    loadImage('cell_img'+i,imgURL+productIMG[n_page]);
    if(cid != null){
    if(cid == productID[n_page]){
    $('cell_img'+i).className = 'allborder';
    }
    else{
    $('cell_img'+i).className = '';
    }
    }
    }
    执行到这个循环的时候
    alert(i);输出0正确
    第一个alert(n_page);输出也正确,然后就不再有alert窗口跳出,也就是说第二个执行不到
    然后我加alert看这中间的哪些有问题,
    $('cell_price'+i).innerHTML=productPrice[n_page];
    $('cell_link'+i).href = rewrite_url(productName[n_page], productID[n_page]);
    这两个没有问题
    下面的productName[n_page]也正常,但是$('cell_link'+i).title这个没有内容输出
      

  12.   

    然后我重新测试,把
    $('cell_link'+i).title = productName[n_page]; 
    $('li'+i).style.display='block'; 
    这两行注释掉,这里还是过不去,第二个alert(n_page)还是没有输出,循环还是进行不下去
      

  13.   

    好想问题出在
    $('cell_price'+i).innerHTML;
    $(pageId).innerHTML
    $('cell_link'+i).title
    alert这些值一会显示undefined,一会有值
    只alert($('cell_price'+i));是有显示的,显示为[object Object]
      

  14.   

    应该是rewrite_url函数里的问题FRIENDLY_URLS是什么,好象没定义哇
    还有baseURL现在有值了吗?
    在rewrite_url函数里alert调试
      

  15.   

    最后的问题了:直接开始的时候已经好了,
    执行
    $(Prev).onclick = function () { 
    if(!activeClick) return false; 
    updateProduct('pre'); 

    $(Next).onclick = function () { 
    if(!activeClick) return false; 
    updateProduct('next'); 
    }
    这里的时候前面的$('cell_price'+i).innerHTML这些显示未定义,后面的数组正常。
      

  16.   

    是不是说页面加载正常,点上一页或下一页还有问题?
    那执行到哪一步出问题了呢?
    LZ要养成一个习惯,出现问题,要知道哪一步执行不了,可以通过alert找出来,一步一步跟踪,这是最基本的;等执行不下去的时候,alert看看各种参数是否正常,是否是自己预期的
      

  17.   

    对的,就是页面加载正常,但是翻页的时候$('cell_price'+i).innerHTML,$('cell_link'+i).href这些显示undefined,数组调用是正确的,但是$('cell_price'+i).innerHTML,$('cell_link'+i).href这些没有传值成功,也就是这些赋值等式右边没有问题,就是无法赋值到左边。还有一个就是图片加载的时候如果没有按照循环加载好的话,到最后虽然说图片地址都得到了,也是正确的,也加载不出来。
      

  18.   

    alert($('cell_price'+i));//看看有没有这个元素