事跟我說他用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監聽事件。
最終修改后的頁面
Query是一個JavaScript庫
jQuery極大簡化了JavaScript
JQuery是一個寫得更少,做的更多的JavaScript庫
$("p").hide();找到所有p標簽,讓它消失。
$("#test").hide() 隱藏id=test標簽
$(this).hide() 隱藏當前的這個標簽
jQuery兩個版本,一個是壓縮過后的,一個是未經壓縮的。
Google 和 Microsoft 對 jQuery 的支持都很好。
$(document).ready(function(){
--- jQuery functions go here ----
});
文檔加載完全在進行jQuery操作。
jQuery 使用 CSS 選擇器來選取 HTML 元素。
$("p") 選取 <p> 元素。
$("p.intro") 選取所有 class="intro" 的 <p> 元素。
$("p#demo") 選取所有 id="demo" 的 <p> 元素。
我可以選擇全局的p標簽,也可以選擇某一區域的p標簽
jQuery CSS 選擇器可用于改變 HTML 元素的 CSS 屬性。
$("p").css("background-color","red");
把所有p標簽的背景色變為紅色。
jQuery 使用名為 noConflict() 的方法來解決該問題。
var jq=jQuery.noConflict(),幫助您使用自己的名稱(比如 jq)來代替 $ 符號。
Query Mobile 會自動為 HTML 表單自動添加樣式,讓它們看起來更具吸引力,觸摸起來更具友好性。
jQuery Mobile 表單結構
jQuery Mobile 使用 CSS 為 HTML 表單元素添加樣式,讓它們更具吸引力,更易于使用。
在 jQuery Mobile 中,您可以使用下列表單控件:
文本輸入框
搜索輸入框
單選按鈕
復選框
選擇菜單
滑動條
翻轉撥動開關
當使用 jQuery Mobile 表單時,您應當知道:
<form> 元素必須有一個 method 和一個 action 屬性
每個表單元素必須有一個唯一的 "id" 屬性。id 必須是整個站點所有頁面上唯一的。這是因為 jQuery Mobile 的單頁導航機制使得多個不同頁面在同一時間被呈現
每個表單元素必須有一個標簽。設置標簽的 for 屬性來匹配元素的 id
實例
<form method="post" action="demoform.html">
<label for="fname">姓名:</label>
<input type="text" name="fname" id="fname">
</form>
嘗試一下 ?
如需隱藏標簽,請使用 class ui-hidden-accessible。這在您把元素的 placeholder 屬性作為標簽時經常用到:
實例
<form method="post" action="demoform.html">
<label for="fname" class="ui-hidden-accessible">姓名:</label>
<input type="text" name="fname" id="fname" placeholder="姓名...">
</form>
嘗試一下 ?
提示: 我們可以使用 data-clear-btn="true" 屬性來添加清除輸入框內容的按鈕 (一個在輸入框右側的 X 圖標):
實例
<label for="fname">姓名:</label>
<input type="text" name="fname" id="fname" data-clear-btn="true">
嘗試一下 ?
清除輸入框的按鈕可以在 <input> 元素中使用,但不能在 <textarea> 中使用。 搜索框中 data-clear-btn 默認值為 "true" ,你可以使用 data-clear-btn="false" 移除該圖標。 |
屬性 | 值 | 描述 |
---|---|---|
data-corners | true | false | 指定按鈕是否有圓角 |
data-icon | 圖標參考手冊 | 指定按鈕圖標 |
data-iconpos | left | right | top | bottom | notext | 指定圖標位置 |
data-inline | true | false | 指定是否內聯按鈕 |
data-mini | true | false | 指定是否為迷你按鈕 |
data-shadow | true | false | 指定按鈕是否添加陰影效果 |
按鈕添加圖標:
<input type="button" value="按鈕">
<input type="reset" value="重置按鈕">
<input type="submit" value="提交按鈕">
嘗試一下 ?
字段容器
如需讓標簽和表單元素看起來更適應寬屏,請用帶有 "ui-field-contain" 類的 <div> 或 <fieldset> 元素包圍 label/form 元素:
實例
<form method="post" action="demoform.php">
<div class="ui-field-contain">
<label for="fname">姓:</label>
<input type="text" name="fname" id="fname">
<label for="lname">姓:</label>
<input type="text" name="lname" id="lname">
</div>
</form>
提示:為了防止 jQuery Mobile 為可點擊元素自動添加樣式,請使用 data-role="none" 屬性:
實例
<label for="fname">姓名:</label>
<input type="text" name="fname" id="fname" data-role="none">
嘗試一下 ?
jQuery Mobile 通過 AJAX 自動處理表單提交,并將試圖集成服務器響應到應用程序的 DOM 中。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。