在include文件(xx.inc)中有如下代码xx.inc,php文件中调用的函数是ocx14_disp
if($flickfg == "True") 
    MimicLamptenmetu_ON($lmpbmp,$lmpflk,$filter,$ocxtop , $ocxleft,$ocxheight, $ocxwidth);
是我今天加的,是为了让图片能交替显示,如果注释这2句,图片可以正常显示,但是肯定没有交替显示的图片
增加这2句,以及以下的2个函数后,提示setTimeout没有被定义,
不知道是否这个函数只能在js文件中或者php文件中使用呢?还是我没有引用莫个文件?
请告诉我把,呵呵
function ocx14_disp($ocxtype, $ocxid, $max_tid)
{    db_ocx_get($ocxtype, $ocxid, $ocx14, 1);
    $status = 0;
    if($ocx14["tagseqno"] == NULL || $ocx14["tagseqno"] < 0  ){
        $pump_no = 1;
    } else {
        $seqno = $ocx14["tagseqno"];
        chid_data_get($seqno, $max_tid, $data_ch, $status);
        $pump_no = $data_ch + 1;
    }    $lmpbmp_name ="lmpbmp" . $pump_no;
    $lmpflk_name ="lmpflk" . $pump_no;
    if($ocx14["pene"] == 't'){
        $filter = "filter:chroma(color=" . bgr10_rgb( $ocx14['peneclr'] ) . ");";
    } else {
        $filter = "";
    }
    chno__get($status,$,$flickfg);     $lmpbmp = $ocx14[$lmpbmp_name];
     $lmpflk = $ocx14[$lmpflk_name];
     $ocxtop = $ocx14["ocxtop"];
     $ocxleft = $ocx14["ocxleft"];
     $ocxheight = $ocx14["ocxheight"];
     $ocxwidth = $ocx14["ocxwidth"];   printf("<img class='mimic_pump' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
               %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
                     $ocx14[$lmpbmp_name], $filter, $ocx14["ocxtop"] , $ocx14["ocxleft"],
                     $ocx14["ocxheight"], $ocx14["ocxwidth"] );
    //以下的2句是我新增加的,为了不耽误你多余的时间,这里以上的代码都没有问题
    if($flickfg == "True")//如果图片需要交替
MimicLamptenmetu_ON($lmpbmp,$lmpflk,$filter,$ocxtop , $ocxleft,$ocxheight, $ocxwidth);//明亮图片显示}//暗淡图片显示函数
function MimicLamptenmetu_OFF($lmpbmpON_name,$lmpbmpOFF_name,$filter,$ocxtop,$ocxleft,$ocxheight,$ocxwidth)
{
    printf("<img class='mimic_pump' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
               %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
               $lmpbmpOFF_name, $filter, $ocxtop , $ocxleft,
               $ocxheight, $ocxwidth);
    //延迟一秒后,明亮图片显示
    setTimeout("MimicLamptenmetu_ON(" + $lmpbmpON_name + "," + $lmpbmpOFF_name + "," + $filter + "," + $ocxtop + "," + $ocxleft + "," + $ocxheight + "," + $ocxwidth + ")",1000);
}//明亮图片显示
function MimicLamptenmetu_ON($lmpbmpON_name,$lmpbmpOFF_name,$filter,$ocxtop,$ocxleft,$ocxheight,$ocxwidth)
{
    printf("<img class='mimic_pump' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
               %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
               $lmpbmpON_name, $filter, $ocxtop , $ocxleft,
               $ocxheight, $ocxwidth);
//延迟一秒后,暗淡图片显示    
setTimeout("MimicLamptenmetu_OFF(" + $lmpbmpON_name + "," + $lmpbmpOFF_name + "," + $filter + "," + $ocxtop + "," + $ocxleft + "," + $ocxheight + "," + $ocxwidth + ")",1000);
}

解决方案 »

  1.   

    当然拉,setTimeout()函数是JS函数,只能在JS  中使用!
      

  2.   

    如果我把这2个函数放在js文件中//暗淡图片显示函数
    function MimicLamptenmetu_OFF($lmpbmpON_name,$lmpbmpOFF_name,$filter,$ocxtop,$ocxleft,$ocxheight,$ocxwidth)
    {
        printf("<img class='mimic_pump' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
                   %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
                   $lmpbmpOFF_name, $filter, $ocxtop , $ocxleft,
                   $ocxheight, $ocxwidth);
        //延迟一秒后,明亮图片显示
        setTimeout("MimicLamptenmetu_ON(" + $lmpbmpON_name + "," + $lmpbmpOFF_name + "," + $filter + "," + $ocxtop + "," + $ocxleft + "," + $ocxheight + "," + $ocxwidth + ")",1000);
    }//明亮图片显示
    function MimicLamptenmetu_ON($lmpbmpON_name,$lmpbmpOFF_name,$filter,$ocxtop,$ocxleft,$ocxheight,$ocxwidth)
    {
        printf("<img class='mimic_pump' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
                   %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
                   $lmpbmpON_name, $filter, $ocxtop , $ocxleft,
                   $ocxheight, $ocxwidth);
    //延迟一秒后,暗淡图片显示    
    setTimeout("MimicLamptenmetu_OFF(" + $lmpbmpON_name + "," + $lmpbmpOFF_name + "," + $filter + "," + $ocxtop + "," + $ocxleft + "," + $ocxheight + "," + $ocxwidth + ")",1000);
    }那么我再inc文件中应该怎么调用这个函数?
        if($flickfg == "True")//如果图片需要交替
        MimicLamptenmetu_ON($lmpbmp,$lmpflk,$filter,$ocxtop , $ocxleft,$ocxheight, $ocxwidth);//明亮图片显示
    该怎么写呢?
      

  3.   


    echo '<script>setTimeout("MimicLamptenmetu_OFF(" +'. $lmpbmpON_name.' + "," +.' $lmpbmpOFF_name .'+"," +'. $filter.' + "," +'. $ocxtop.' + "," +'. $ocxleft.' + "," + '.$ocxheight + "," +'. $ocxwidth.' + ")",1000);</script>';//改成这样试试!
      

  4.   

     '.$ocxheight后面少了个.请加上!
      

  5.   

    谢谢大灰狼
    运行没有错误,就是没有效果<script>setTimeout("MimicLamptenmetu_OFF("  + ll-r1.png  + "," + ll-w1.png + ","  +   +  ","  + 240  +  ","  + 184  +  "," + 10  + "," +10 + ")",1000);</script>html原麻的样子现在代码的样子。inc文件中function ocx14_disp($ocxtype, $ocxid, $max_tid)
    {    db_ocx_get($ocxtype, $ocxid, $ocx14, 1);
        $status = 0;    if($ocx14["tagseqno"] == NULL || $ocx14["tagseqno"] < 0  ){
            $pump_no = 1;
        } else {
            $seqno = $ocx14["tagseqno"];
            chid_data_get($seqno, $max_tid, $data_ch, $status);
            $pump_no = $data_ch + 1;
        }    $lmpbmp_name ="lmpbmp" . $pump_no;
        $lmpflk_name ="lmpflk" . $pump_no;
        if($ocx14["pene"] == 't'){
            $filter = "filter:chroma(color=" . bgr10_rgb( $ocx14['peneclr'] ) . ");";
        } else {
            $filter = "";
        }
            chno__get($status,$,$flickfg);     $lmpbmp = $ocx14[$lmpbmp_name];
         $lmpflk = $ocx14[$lmpflk_name];
         $ocxtop = $ocx14["ocxtop"];
         $ocxleft = $ocx14["ocxleft"];
         $ocxheight = $ocx14["ocxheight"];
         $ocxwidth = $ocx14["ocxwidth"];
        printf("<img class='mimic_pump' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
                   %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
                         $lmpbmp , $filter, $ocxtop  , $ocxleft ,
                         $ocxheight , $ocxwidth  );
        if($flickfg == "True")
    MimicLamptenmetu_ON($lmpbmp,$lmpflk,$filter,$ocxtop , $ocxleft,$ocxheight, $ocxwidth);}function MimicLamptenmetu_OFF($lmpbmpON_name,$lmpbmpOFF_name,$filter,$ocxtop,$ocxleft,$ocxheight,$ocxwidth)
    {
       printf("<img class='mimic_pump' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
                   %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
                   $lmpbmpOFF_name, $filter, $ocxtop , $ocxleft,
                   $ocxheight, $ocxwidth);           echo '<script>setTimeout("MimicLamptenmetu_ON(" +'. $lmpbmpON_name.' + "," +'. $lmpbmpOFF_name .'+"," +'. $filter.' + "," +'. $ocxtop.' + "," +'. $ocxleft.' + "," + '.$ocxheight. + "," +'. $ocxwidth.' + ")",1000);</script>';}
    function MimicLamptenmetu_ON($lmpbmpON_name,$lmpbmpOFF_name,$filter,$ocxtop,$ocxleft,$ocxheight,$ocxwidth)
    {
        printf("<img class='mimic_pump' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
                   %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
                   $lmpbmpON_name, $filter, $ocxtop , $ocxleft,
                   $ocxheight, $ocxwidth);           echo '<script>setTimeout("MimicLamptenmetu_OFF(" +'. $lmpbmpON_name.' + "," +'. $lmpbmpOFF_name .'+"," +'. $filter.' + "," +'. $ocxtop.' + "," +'. $ocxleft.' + "," + '.$ocxheight. + "," +'. $ocxwidth.' + ")",1000);</script>';}
      

  6.   


    echo '<script>setTimeout("MimicLamptenmetu_OFF(" +'. $lmpbmpON_name.' + "," +'. $lmpbmpOFF_name .'+"," +'. $filter.' + "," +'. $ocxtop.' + "," +'. $ocxleft.' + "," + '.$ocxheight.'+ "," +'. $ocxwidth.' + ")",1000);</script>';点和分号都要加上,不好意思我的疏忽,啥什么我成大灰狼了。呵呵!
      

  7.   

    晕,加不了红色,就是在'.$ocxheight加上.'看看
      

  8.   

    而且你自己代码也有错误,第一个echo 后面要加;号
      

  9.   


               echo '<script>setTimeout("MimicLamptenmetu_ON(" +'. $lmpbmpON_name .' + "," +'. $lmpbmpOFF_name .'+"," +'. $filter.' + "," +'. $ocxtop.' + "," +'. $ocxleft.' + "," + '.$ocxheight. + "," +'. $ocxwidth.' + ")",1000);</script>;和你写的那里不是一样么?  点,分号都有。
      

  10.   

    晕JS里还要调用PHP里的函数。<script language="javascript"   src="xx.php">
      

  11.   

    师傅也不知道怎么回事。还是来这里求助再描述一下问题,也许我前面描述的不清楚。
    功能就是要图片闪索的效果。mimic.php文件中包含了require("../include/func_ocx.inc");
    mimic.php文件中包含了<script language="JavaScript" src="./mimic.js"></script>
    mimic.php文件中也包含了调用下面函数的代码 此函数名字为  ocx14_disp
    func_ocx.inc文件中的代码有以下片断
    //图片表示函数
    function ocx14_disp($ocxtype, $ocxid, $max_tid)
    {
        
        db_ocx_get($ocxtype, $ocxid, $ocx14, 1);
        $status = 0;
        if($ocx14["tagseqno"] == NULL || $ocx14["tagseqno"] < 0  ){
            $pump_no = 1;
        } else {
            $seqno = $ocx14["tagseqno"];
            chid_data_get($seqno, $max_tid, $data_ch, $status);
            $pump_no = $data_ch + 1;
        }    $lmpbmp_name ="lmpbmp" . $pump_no;
        $lmpflk_name ="lmpflk" . $pump_no;
        if($ocx14["pene"] == 't'){
            $filter = "filter:chroma(color=" . bgr10_rgb( $ocx14['peneclr'] ) . ");";
        } else {
            $filter = "";
        }
        
        chno__get($status,$,$flickfg);     $lmpbmp = $ocx14[$lmpbmp_name];//明亮图片的文件名字
         $lmpflk = $ocx14[$lmpflk_name];//暗淡图片的文件名
         $ocxtop = $ocx14["ocxtop"];//坐标信息
         $ocxleft = $ocx14["ocxleft"];
         $ocxheight = $ocx14["ocxheight"];
         $ocxwidth = $ocx14["ocxwidth"];
         $ocxname  = "ocx14_" . $ocxid;   //将要显示的组建名字
        //画像の表示
        printf("<img class='mimic_pump' name='%s' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
                   %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
                         $ocxname,$lmpbmp , $filter, $ocxtop  , $ocxleft ,
                         $ocxheight , $ocxwidth  );//以上的代码显示图片正常    if($flickfg == "True")//需要图片闪烁的标志
            printf("<script>MimicLamptenmetu_ON($ocxname,$lmpbmp,$lmpflk);</script>\n")}
    下面是mimic.js中的闪烁函数代码
    //暗淡图片显示
    function MimicLamptenmetu_OFF(ocxname,lmpbmpON_name,lmpbmpOFF_name)
    {
       document.ocxname.src='../png/parts/' + lmpbmpOFF_name;  //这里的ocxname不知道怎么写
           setTimeout("MimicLamptenmetu_ON(" + ocxname + "," + lmpbmpON_name + "," + lmpbmpOFF_name + ")",1000);
    }//明亮图片显示
    function MimicLamptenmetu_ON(ocxname,lmpbmpON_name,lmpbmpOFF_name)
        document.ocxname.src='../png/parts/' + lmpbmpON_name;  //这里的ocxname不知道怎么写
        setTimeout("MimicLamptenmetu_OFF(" + ocxname + "," + lmpbmpON_name + "," + lmpbmpOFF_name + ")",1000);
    }问题点是
     1。mimic.js文件中的ocxname该怎么写?
     2。这样写能否达到1000ms后换图片,也就是否能闪烁?
      

  12.   

    请注意一些书写的方式,字符串要用引号引起,否则解析出来就不对了。
    php:
    if($flickfg == "True")//需要图片闪烁的标志
        //调用函数记得将参数字符串值用引号引起
         printf("<script>MimicLamptenmetu_ON('{$ocxname}','{$lmpbmp}','{$lmpflk}');</script>\n");
    javascript//暗淡图片显示
    function MimicLamptenmetu_OFF(ocxname,lmpbmpON_name,lmpbmpOFF_name)
    {
       //如果ocxname是id属性值,应该用document.getElementById(ocxname)读取节点对象,这样书写只适合ie
       document.ocxname.src='../png/parts/' + lmpbmpOFF_name;  //这里的ocxname不知道怎么写
        //调用函数记得将参数字符串值用引号引起
           setTimeout("MimicLamptenmetu_ON('" + ocxname + "','" + lmpbmpON_name + "','" + lmpbmpOFF_name + "')",1000);
    }
    //以下类似
    //明亮图片显示
    function MimicLamptenmetu_ON(ocxname,lmpbmpON_name,lmpbmpOFF_name)
        document.ocxname.src='../png/parts/' + lmpbmpON_name;  //这里的ocxname不知道怎么写
        setTimeout("MimicLamptenmetu_OFF('" + ocxname + "','" + lmpbmpON_name + "','" + lmpbmpOFF_name + "')",1000);
    }
      

  13.   

    有节点id属性值,就立马用document.getElementById('控件id值'),这个方法是dom1.0开始就支持的,除非特别老的opera浏览器不支持外,一般都支持,如果只有name属性值,就麻烦点,但也可以用比较通用的方法,比如document.getElementsByName('nm')[0],这个表示第一个name叫'nm'的节点,如果读第三个name叫'nm'的节点,就应该是document.getElementsByName('nm')[2]...或者你可以考虑用jquery等javascript框架,就根据具体框架方法来读取节点,不用考虑浏览器兼容的问题。
      

  14.   

    楼上说的ID,我可以追加吧
    printf("<img class='mimic_pump' name='%s' src='../png/parts/%s' style = 'position:absolute; z-index:2; 
                   %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
                         $ocxname,$lmpbmp , $filter, $ocxtop  , $ocxleft ,
                         $ocxheight , $ocxwidth  );这里的name 都是我加上的,以前都没有。是不是在这里把id加上就可以呢?
      

  15.   

    总之到目前为止也就这样了。和负责人说了,他说基本可以了。第一次作有关于php的东西,基本语法也不晓得。谢谢大家了
      

  16.   

    我把name换成id了    printf("<img class='mimic_pump' id ='%s'  src='../png/parts/%s' style = 'position:absolute; z-index:2; 
                   %s top:%spx;left:%spx;height:%spx;width:%spx;'>\n",
                         $ocxname  ,$lmpbmp , $filter, $ocx14["ocxtop"] , $ocx14["ocxleft"] ,
                         $ocx14["ocxheight"] , $ocx14["ocxwidth"] );
    这样这个document.getElementById 看起来就比较自然了。谢谢啦