奇怪的JS函数, 函数与其内部函数得出的结果不同

JavaScript015

奇怪的JS函数, 函数与其内部函数得出的结果不同,第1张

onload是一个事件,要执行后面的function需要载入完毕才行,所以当一面执行到

alert(imgH)//此处不知道为何,返回"undefined"

时图片对象imgObj还没有加载完,所以想弹出"undefined",

等到imgObj加载完的时候,触发onload事件,并执行onload绑定的函数,该函数执行之后imgH被赋值了,所以后面又弹出一个具有height值警告框。

  alert(imgH)//此处能够得到数值

把document.writeln放到onsuccess里面去就好了。

因为是异步调用,也就是你的openlink还没有执行完,就已经把writeln执行完了

而你加一个alert之后是正常的,原因是你点alert的时候,已经将异步调用执行完了,alert和writeln是顺序执行的,alert不关,是不执行writeln的。

sk.openLink({

url: APPNAME + '/business/infomation/stpLogView.action',

params : {'logid':logid},

scope : this,

onSuccess : function(rs){

code=rs.data.msgCode chtime=rs.data.charterTime

document.writeln(code)

} })

初步怀疑你的删除事件绑定有问题:新加入的DOM元素未绑定到事件。这种情况应该使用事件委派来做,你用 jQuery 吗?假设你的购物车列表的 HTML 结构如下:

<ul id="cartList">

    <li>

        购物车商品1

        <button>删除</button>

    </li>

    <li>

        购物车商品2

        <button>删除</button>

    </li>

    ……

</ul>

则删除购物车商品的代码为(用了 jQuery):

$('#cartList').on('click', 'button', function() {  // 委派 button 的点击事件

    $(this).parent().remove()  // 移除购物车里当前商品

})