问一个关于setTimeout使用问题

ZOU_SEAFARER 2009-10-23 07:37:55
在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_mark_get($status,$mark,$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);
}


...全文
407 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZOU_SEAFARER 2009-10-26
  • 打赏
  • 举报
回复
我把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 看起来就比较自然了。

谢谢啦
foolbirdflyfirst 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 zou_seafarer 的回复:]
楼上说的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加上就可以呢?

[/Quote]
完全可以,而且用id读取节点效率最高。
ZOU_SEAFARER 2009-10-26
  • 打赏
  • 举报
回复
总之到目前为止也就这样了。和负责人说了,他说基本可以了。

第一次作有关于php的东西,基本语法也不晓得。谢谢大家了
ZOU_SEAFARER 2009-10-26
  • 打赏
  • 举报
回复
楼上说的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加上就可以呢?
foolbirdflyfirst 2009-10-26
  • 打赏
  • 举报
回复
有节点id属性值,就立马用document.getElementById('控件id值'),这个方法是dom1.0开始就支持的,除非特别老的opera浏览器不支持外,一般都支持,如果只有name属性值,就麻烦点,但也可以用比较通用的方法,比如document.getElementsByName('nm')[0],这个表示第一个name叫'nm'的节点,如果读第三个name叫'nm'的节点,就应该是document.getElementsByName('nm')[2]...

或者你可以考虑用jquery等javascript框架,就根据具体框架方法来读取节点,不用考虑浏览器兼容的问题。
ZOU_SEAFARER 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 foolbirdflyfirst 的回复:]
请注意一些书写的方式,字符串要用引号引起,否则解析出来就不对了。
php:
PHP codeif($flickfg=="True")//需要图片闪烁的标志
//调用函数记得将参数字符串值用引号引起printf("<script>MimicLamptenmetu_ON('{$ocxname}','{$lmpbmp}','{$lmpflk}');</script>\n");

javascript

JScript code//暗淡图片显示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);
}

[/Quote]

老大,解决了。。。。。谢谢你
还有一个问题,你提到的
这样书写只适合ie ,有没有其他的东西能通用的?
以为这个也许欧洲人用,他们不一定用啥浏览器呢
foolbirdflyfirst 2009-10-26
  • 打赏
  • 举报
回复
请注意一些书写的方式,字符串要用引号引起,否则解析出来就不对了。
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);
}

ZOU_SEAFARER 2009-10-26
  • 打赏
  • 举报
回复
师傅也不知道怎么回事。还是来这里求助

再描述一下问题,也许我前面描述的不清楚。
功能就是要图片闪索的效果。

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_mark_get($status,$mark,$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后换图片,也就是否能闪烁?


ruanchao 2009-10-23
  • 打赏
  • 举报
回复
楼主现在还有什么问题呢?
ZOU_SEAFARER 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dzxccsu 的回复:]
而且你自己代码也有错误,第一个echo 后面要加;号
[/Quote]

呵呵,是系统限制了长度的原因
dzxccsu 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zou_seafarer 的回复:]
PHP codeecho'<script>setTimeout("MimicLamptenmetu_ON(" +'.$lmpbmpON_name.' + "," +'.$lmpbmpOFF_name.'+"," +'.$filter.' + "," +'.$ocxtop.' + "," +'.$ocxleft.' + "," +'.$ocxheight.+","+'. $ocxwidth.'+")",1000);</script>;
和你写的那里不是一样么?  点,分号都有。
[/Quote]晕JS里还要调用PHP里的函数。<script language="javascript" src="xx.php">
ZOU_SEAFARER 2009-10-23
  • 打赏
  • 举报
回复

echo '<script>setTimeout("MimicLamptenmetu_ON(" +'. $lmpbmpON_name .' + "," +'. $lmpbmpOFF_name .'+"," +'. $filter.' + "," +'. $ocxtop.' + "," +'. $ocxleft.' + "," + '.$ocxheight. + "," +'. $ocxwidth.' + ")",1000);</script>;

和你写的那里不是一样么? 点,分号都有。
dzxccsu 2009-10-23
  • 打赏
  • 举报
回复
而且你自己代码也有错误,第一个echo 后面要加;号
dzxccsu 2009-10-23
  • 打赏
  • 举报
回复
晕,加不了红色,就是在'.$ocxheight加上.'看看
dzxccsu 2009-10-23
  • 打赏
  • 举报
回复

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

点和分号都要加上,不好意思我的疏忽,啥什么我成大灰狼了。呵呵!
ZOU_SEAFARER 2009-10-23
  • 打赏
  • 举报
回复
谢谢大灰狼
运行没有错误,就是没有效果

<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_mark_get($status,$mark,$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>';

}

llj480028 2009-10-23
  • 打赏
  • 举报
回复
setTimeout()是js的,楼上OK了!
dzxccsu 2009-10-23
  • 打赏
  • 举报
回复
'.$ocxheight后面少了个.请加上!
dzxccsu 2009-10-23
  • 打赏
  • 举报
回复

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

ZOU_SEAFARER 2009-10-23
  • 打赏
  • 举报
回复
如果我把这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)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧