在网上找了很多资料,都是部份,不能达到最终的目的,没办法,只好自己来,下面是步骤和和代码,代码有些是网上经过修改的,凑和着用吧。

第一步:在goods.dwt文件中显示库存数的地方加这样一段代码用于显示库存数




{$lang.goods_number} {$lang.stock_up} 
{$lang.goods_number}{$goods.goods_number}{$goods.measure_unit}


第二步:在goods.dwt文件中javascript部份加如下代码,这是两个函数:


function changeNumber(){
	var formBuy = document.forms['ECS_FORMBUY'];
    spec_arr = getSelectedAttributes(formBuy);
    
    Ajax.call('goods.php', 'act=getnumber&id=' + goodsId + '&pro_id=' + spec_arr, shows_number, 'GET', 'JSON');
}

function shows_number(res){
	if(res.pro_number !=undefined){
    //这里我把$换成了document.getElementById,因为ecshop有时候不兼容jquery
    //$('shows_number').innerHTML = result.pro_number+'件';
    document.getElementById('attr_number').innerHTML = result.pro_number+'件';
    }else{
    document.getElementById('attr_number').innerHTML = '未设置';
    //$('shows_number').innerHTML = '未设置';
    }
}
第三步:在goods.php中加如下代码:



/*------------------------------------------------------ */
//-- 改变属性时获取相应的库存数
/*------------------------------------------------------ */
if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'getnumber')
{
    include('includes/cls_json.php');

    $json   = new JSON;
    $res    = array('err_msg' => '', 'pro_number' => '');

	$pro_id   = isset($_REQUEST['pro_id']) ? explode(',', $_REQUEST['pro_id']) : array();
	$goods_attr = implode('|',$pro_id);

    if ($goods_id == 0)
    {
        $res['err_msg'] = $_LANG['err_change_attr'];
        $res['err_no']  = 1;
    }else{
		$res['pro_number'] = getProductNumber($goods_id,$goods_attr);
	}
    

    die($json->encode($res));
}

下面是一个函数,取得属性的库存值



/* 获取属性库存值 */
function getProductNumber($goods_id,$goods_attr){
	$sql = "SELECT product_number FROM  ".$GLOBALS['ecs']->table(products)." WHERE goods_id =".$goods_id." AND goods_attr='".$goods_attr."'";
	$res = $GLOBALS['db']->getRow($sql);
	return $res['product_number'];
}
这样基本就差不多了,我不过,要在网页载入第一次就改变值的话还要在goods.dwt文件中改变一下



onload = function(){
  changePrice();
  changeNumber();//第一次加载网页就改变数量
  fixpng();
  try { onload_leftTime(); }
  catch (e) {}
}