1. 程式人生 > >頁面中用focus不起作用,alert之後才起作用

頁面中用focus不起作用,alert之後才起作用

如題,這個問題就結了很久,focus明明是個簡單得要死的函式,但是,卻不起作用,前面用alert提示了一下,竟然起作用了,alert去掉之後又不起作用。從網上搜集了這個問題。原因是:

在執行一段指令碼時,對dom的操作應當是即時生效的。dom操作確實都是同步的。但是因dom改變而觸發的事件,以及其他一些效應(例如樣式應用),很可能是非同步的。所以,focus這裡可能是有延遲的。也有人說指令碼對dom的操作不是即時生效的,瀏覽器可能執行完當前指令碼所有程式碼後才真正處理指令碼中對dom的操作。

無論它是不是及時生效,但是,事實就是,focus必須延時一段時間才可以生效。

所以處理這類問題的時候,要加上人工的延時函式,進行延時處理。

延時函式為:settimeout()。函式的使用方法可以從網上找到,我做的例子如下:最值得提出的就是其中的單引號‘’。剛剛用的時候,沒有注意裡面的單引號,所以會有一樣沒反應的問題出現。如果遇到了這個問題,請試試加上單引號吧,好象語句裡面原本有雙引號的地方要變為單引號,由於這個引號的問題我也沒搞太清楚,就請使用者用的時候多試驗幾次吧。

程式碼:

<span style="white-space:pre">						</span>inputIdPl="#"+inputId;
						if(document.getElementById(buttonId))
						{
							document.getElementById(buttonId).click();
							//alert($(inputIdPl));
							//element.focus();
							//$(inputIdPl).focus();
							window.setTimeout("$('"+inputIdPl+"').focus();", 50);//focus不能及時重新整理的問題
						}