2015-05-08 233 views
0

我有一個setAttribute函數的問題。javascript setAttribute功能

這裏我的代碼

mind.SetRequest(rec_input.value); 
mind.Reply(); 
element.setAttribute('text', mind.GetReply()); 
element.speak(); 

element.speak()不是等着setAttribute完成。

setAttribute完成時,是否有任何功能調用speak()

加載img後調用的img.onload = function(){ . . . }函數,有沒有類似的方法可以在setAttribute之後調用我的speak函數?

+1

'setAttribute()'是同步的。是什麼讓你覺得它不是? –

+0

提供jsBin的測試頁面。 –

+1

@MattBall'element.speak();'讓我覺得'element'不是DOM元素。然而誰知道,也許OP用自定義的方法擴展它.. – dfsq

回答

1

試試這個:

mind.SetRequest(rec_input.value); 
mind.Reply(); 
element.setAttribute('text', mind.GetReply()); 
setTimeout(function() { 
    element.speak(); 
}, 0); 

setAttribute()是同步的,但它是基於DOM的方法。這意味着瀏覽器需要額外的處理器滴答來設置該屬性。因此,使用超時將代碼執行(嘗試獲取該屬性)移動到下一個事件循環。

+0

嗨馬克斯,我正在嘗試你的方法,但用這種方式說功能沒有叫 – Gor

+0

@Gor我更新了我的答案。試試看,請 – Max

+0

你的新方法工作,謝謝 – Gor