事跟我說他用jQuery取不到頁面上隱藏元素input的值,他的html頁面大概內容如下。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="jslib/jquery-1.11.2.min.js"></script>
<title>淺談Html頁面內容執行順序</title>
<script type="text/javascript">
var userId = $('#hiddenUserId').val();
var contextPath = $('#hiddenContextPath').val();
var userName = $('#hiddenUserName').val();
</script>
</head>
<body>
<input type="hidden" id="hiddenUserId" value="101" />
<input type="hidden" id="hiddenContextPath" value="/web" />
<input type="hidden" id="hiddenUserName" value="小明" />
</body>
</html>
頁面中的JS腳本在head中,JS腳本要讀取的input在body中。瀏覽器對html頁面內容的加載是順序加載,也就是在html頁面中前面先加載,因此當加載到JS腳本時,input還沒有加載到瀏覽器中。JS是一種解釋性的腳本,也是從上而下順序執行,由于這段JS代碼是立即執行的,所以當JS在執行的時候,讀取不到input的值。
最直接的修改方法是把JS放到網頁的最下面執行。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="jslib/jquery-1.11.2.min.js"></script>
<title>淺談Html頁面內容執行順序</title>
</head>
<body>
<input type="hidden" id="hiddenUserId" value="101" />
<input type="hidden" id="hiddenContextPath" value="/web" />
<input type="hidden" id="hiddenUserName" value="小明" />
<script type="text/javascript">
var userId = $('#hiddenUserId').val();
var contextPath = $('#hiddenContextPath').val();
var userName = $('#hiddenUserName').val();
</script>
</body>
</html>
把JS放到網頁的最下面,這樣在JS執行的時候,網頁內容都已經加載完畢。把JS放在網頁的最下面方法并不是最好的解決方法,大部分情況JS并不是總能放在網頁的最下面。這時可以用window的onload事件,onload事件在整個頁面都加載完成后才觸發,可以把JS腳本放在onload里面執行。不同瀏覽器onload事件添加方式也不一樣。
IE下事件:
window.attachEvent('onload', function(){
var userId = $('#hiddenUserId').val();
var contextPath = $('#hiddenContextPath').val();
var userName = $('#hiddenUserName').val();
});
Chrome/Firefox等DOM標準事件:
window.addEventListener('load', function(){
var userId = $('#hiddenUserId').val();
var contextPath = $('#hiddenContextPath').val();
var userName = $('#hiddenUserName').val();
});
由于不同瀏覽器的事件添加方式不一樣,jQuery為我們提供了通用的初始化方法,該方法在頁面加載完成時觸發。
$(function(){
var userId = $('#hiddenUserId').val();
var contextPath = $('#hiddenContextPath').val();
var userName = $('#hiddenUserName').val();
});
上面方法本質就是添加onload監聽事件。
最終修改后的頁面
者:Tam Hanna
轉發鏈接:https://www.creativebloq.com/how-to/21-ways-to-optimise-your-css-and-speed-up-your-site
大家推薦一個網站(css-loaders.com),這個網站真的是特別好用,將來同學在開發項目的時候基本上都需要用到各種各樣的加載狀態,各種各樣的加載動畫。這個網站就提供了各種各樣的加載動畫,而且用起來超級簡單,就不可能不會用,特別簡單。
大家看到了嗎?這么一堆的加載中動畫就很方便,而且我告訴你怎么用。舉個例子,比如這個,大家看我喜歡想要哪個動畫,只需要把鼠標放上去,有一個叫copy the CSS,把它的CSS樣式復制下來。
然后去干什么?找到代碼,這是一個空的文件,直接Ctrlv粘貼,它就能自動的把剛才所看中動畫的樣式給復制進來了。對于頁面來說就只需要加一個div,這個div在這就加一個class,名字為loader的DIV,這樣一個加載中動畫就有了。
然后就直接打開看一下,大家會看到了嗎?這個動畫就有了,特別方便。想換成別的樣式的就隨便切換就行了。只要有DIV,將來想用什么動畫就直接copy它的CSS樣式,比如這個,再復制一下,點擊一下就行了。把之前的樣式刪掉,再粘進來,剛才復制過來的,再粘貼,動畫也就出來了。
是不是特別的好用?而且這里面的動畫效果特別多,能夠讓網頁變得非常炫酷。這些足夠用了,真的是多的不能再多了,給我看的都眼花繚亂了。這樣一個鬧鐘的效果,什么樣的都有。而且做的很簡單,只需要替換掉CSS,有這樣一個div,效果就有了。
看到了嗎?各位,就這個網站的,必須收藏,真的好用。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。