先说问题3 传参数,如果只是字符串,比较简单<script language="javascript">
function getObject(str)
{
alert(str)
}
var a="aa"
setTimeout("getObject('"+a+"')",1000)
</script>如果传对象<input name="aa" value="haha">
<script language="javascript">
var _st = window.setTimeout;
window.setTimeout = function(fRef,mDelay)
{
if(typeof fRef =="function")
{
var argu=Array.prototype.slice.call(arguments,2);
var f=(
function(){
fRef.apply(null, argu);
}
);
return _st(f,mDelay);
}
return _st(fRef,mDelay);
}
function getObject(obj)
{
alert(obj.value)
}
var a=document.getElementById("aa") setTimeout(getObject,1000,a)
</script>
function getObject(str)
{
alert(str)
}
var a="aa"
setTimeout("getObject('"+a+"')",1000)
</script>如果传对象<input name="aa" value="haha">
<script language="javascript">
var _st = window.setTimeout;
window.setTimeout = function(fRef,mDelay)
{
if(typeof fRef =="function")
{
var argu=Array.prototype.slice.call(arguments,2);
var f=(
function(){
fRef.apply(null, argu);
}
);
return _st(f,mDelay);
}
return _st(fRef,mDelay);
}
function getObject(obj)
{
alert(obj.value)
}
var a=document.getElementById("aa") setTimeout(getObject,1000,a)
</script>
<script language="javascript">
var _obj1 = getObject("obj1"); //语句1
var _obj2 = getObject("obj2"); //语句2
i=0;
function getObject(objName)
{
try{
if(eval(objName)){
return eval(objName);
}
else{
setTimeout(function(){alert(objName+"haha"+(i++))},3000);
}
}
catch(ex){
setTimeout(function(){alert(objName+"haha"+(i++))},3000);
}
}
</script>
var _obj1 = getObject("obj1"); //语句1
var _obj2 = getObject("obj2"); //语句2
function getObject(_obj){
if(_obj=="obj1"){
setTimeout(function(){alert(1);},3000)
}
else{alert(2)}
}
</script>
一个简单的例子,你就清楚了先执行的是哪个
虽然你的都使用了setTimeout,但实际上2已经开始运行了
再举一个例子给你看
<script>
var _obj1 = getObject("obj1"); //语句1
var _obj2 = getObject("obj2"); //语句2
function getObject(_obj){
if(_obj=="obj1"){
setTimeout(function(){alert(1);},3000)
}
else{setTimeout(function(){alert(2);},1000)}
}
</script>
setTimeout(function(){getObject(_obj);},1);我这样写能不能实现传参数的 setTimeout方法调用?
这个是setTimeout方法可以实现传参数,但是不能达到
问题1:
我的目的是语句1执行完以后,直到语句1的对象(obj1)返回了,才执行语句2,直到语句2的对象(obj2)返回了,此执行语句3
不知道我这样写是否能完成我的想法 你这个问题
由于用了setTimeout,所以我不知道是否在任何情况下,都是执行了return eval(_obj);以后才会执行下一句!
例如:语句1是否得到return eval(_obj); 回值后才执行语句2!
并不一定是先得到return eval(_obj); 回值后才执行语句2
如果你传的第一次不是对象的话,就回延时,一延时的话,语句2也进入了执行状态
var _obj2 = getObject("obj2"); //语句2
//语句3 那要满足!语句1和2都保证
_obj1,_obj2都已返回值了!并且都获得对象了!
才执行语句3应该怎么写啊?
<script>
var _obj1 = getObject("obj1"); //语句1
var _obj2 = getObject("obj2"); //语句2
var _obj3 = getObject("obj3"); //语句3
function getObject(_obj){
if(_obj=="obj1"){
setTimeout(function(){alert(1);},3000)
}
elseif {
setTimeout(function(){alert(2);},1000)
}
else {
setTimeout(function(){alert(3);},1000)
}
}
</script>
<script>
var _obj1 = getObject("obj1"); //语句1
var _obj2 = getObject("obj2"); //语句2
var _obj3 = getObject("obj3"); //语句3
function getObject(_obj){
if(_obj=="obj1"){
setTimeout(function(){alert(1);},3000)
}
elseif {
setTimeout(function(){alert(2);},1000)
}
else {
setTimeout(function(){alert(3);},1000)
}
}
</script>这样不行吧?
1.如果没有obj1对象的化就会报错!
2.如果语句1执行以后!根本没有判断_obj1是否已经是对象了!
就开始执行语句2了
chinmo hbhbhbhbhb1021
.......
不知道我这样写是否能完成我的想法
使用setTimeout是无法达到你的这个效果的!!
我通过getObject方法获得这个.js文件里面的一个对象!
但是我无法知道这个.js文件什么时候加载完成!
所以我想!直到这个对象确实存在了才说明加载完成了!
才继续下面的语句!
这个怎么写啊?
要能使onload调用init()这个函数
我还说什么啊!!!!!!!!!!!!!!!!
如果你真的想那样执行完一个到一个的话,请用if else
比如:var _obj1 = getObject("obj1"); //语句1
if(_obj1){
var _obj2 = getObject("obj2"); //语句2
if(_obj2){
//语句3
}
else{
//这里执行_obj2不是对象的情况的语句
}
}
else{//这里执行_obj1不是对象的情况的语句}
只能使用这样的形式来显示
问题3,可以使用
setTimeout("alert('aaa')", 10);
这种方式来传参数,但是参数的定义区域需要注意一下.
得到这个对象我就延迟一下而已!
用if else的会造成由于js没有加载上而得不到对象的情况!
我必须这些对象都得到啊
--------------------------不管怎样,是不能使用setTimeout等延时
如果你真的想那样执行完一个到一个的话,请用if else
比如: var _obj1 = getObject("obj1"); //语句1
if(_obj1){
var _obj2 = getObject("obj2"); //语句2
if(_obj2){
//语句3
}
else{
//这里执行_obj2不是对象的情况的语句
}
}
else{//这里执行_obj1不是对象的情况的语句}
只能使用这样的形式来显示
这就是判断是否为对象的
if(_obj1){//这里必须是对象才执行下面的
var _obj2 = getObject("obj2"); //语句2
if(_obj2){
//语句3
}
else{
//这里执行_obj2不是对象的情况的语句
}
} 告诉你了,使用setTimeout是没办法做到你的目的,而且使用使用if是肯定得到了对象才执行
这样的效果了
function init(){
var _obj1 = eval(str1); //语句1
var _obj2 = eval(str2); //语句2
//语句3
} 语句1还没执行完会执行到语句2吗?
随便高诉你 判断 _obj1是否为对象,可以用 if(typeof(_obj1)=="object")