国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

MooTools教程(6):操縱HTML DOM元素

2024-07-21 02:04:23
字體:
來源:轉載
供稿:網友

我們已經學習過如何來選取dom元素,怎么創建數組,怎么創建函數,怎么把事件添加到元素,今天我們來深入地學習一下如果操縱html元素。通過mootools 1.2,你可以添加新元素到一個html頁面中,也可以刪除元素,以及改變任何樣式或者元素參數,這些都非常容易。

基本方法

.get();

這個工具可以讓你獲取元素的屬性(property)。元素的屬性是組成一個html元素的各種不同部分,例如src、value、name等等。使用.get();方法非常簡單:

參考代碼: [復制代碼] [保存代碼]
  1. // 下面這行將返回id為“id_name”的元素的html標記名(div、a、span……)
  2. $('id_name').get('tag');
參考代碼: [復制代碼] [保存代碼]
  1. <div id="body_wrap">
  2.     <span id="id_name">element</span> <!-- 上面的代碼將返回“span” -->
  3. </div>

你可以使用.get();方法獲得更多屬性,而不只是html標記名:

  • id
  • name
  • value
  • href
  • src
  • class(如果有多個css類名,則將返回全部css類名)
  • text (一個元素的文本內容)
  • 等等…

.set();

.set();方法和.get();方法一樣,不過不是獲得一個值,而是設置一個值。當和事件聯合使用時比較有用,通過這個方法你可以在頁面加載之后改變一些屬性值。

參考代碼: [復制代碼] [保存代碼]
  1. // 這將設置id為id_name的元素鏈接地址為“http://www.google.com”
  2. $('id_name').set('href''http://www.google.com');
參考代碼: [復制代碼] [保存代碼]
  1. <div id="body_wrap">
  2.     <!-- 上面的代碼將改變鏈接地址為“http://www.google.com”  -->
  3.     <a id="id_name" href="http://www.yahoo.com">search engine</a>
  4. </div>

.erase();

通過.erase();方法,你可以清除一個元素的屬性值。它和前面兩個方法類似。選取元素,然后選擇你要清除的屬性。

參考代碼: [復制代碼] [保存代碼]
  1. // 這講移除id為id_name的元素的href屬性
  2. $('id_name').erase('href');
參考代碼: [復制代碼] [保存代碼]
  1. <div id="body_wrap">
  2.     <!-- 上面的代碼將清除鏈接地址 -->
  3.     <a href="http://www.yahoo.com">search engine</a>
  4. </div>

移動元素

.inject();

要移動頁面上一個已經存在的元素,你可以使用.inject();方法。和我們看到的其它方法類似,它用起來也非常簡單,可以在你的用戶界面上給你更多操控權。要使用.inject();方法,首先要設置一些包含元素變量:

參考代碼: [復制代碼] [保存代碼]
  1. var elementa = $('elema');
  2. var elementb = $('elemb');
  3. var elementc = $('elemc');

上面的代碼把下面這個html分別賦值給了不同的變量,這樣用mootools來操作時會比較簡單。

參考代碼: [復制代碼] [保存代碼]
  1. <div id="body_wrap">
  2.     <div id="elema">a</div>
  3.     <div id="elemb">b</div>
  4.     <div id="elemc">c</div>
  5. </div>

現在,要改變這些元素的順序,我們可以通過四種方式來使用.inject();方法。我們可以把元素注入到:

  • 底部(bottom,默認)
  • 頂部(top)
  • 在某個元素的前面(before)
  • 在某個元素的后面(after)

bottom和top將把這個元素注入到一個選中元素的內部,在元素內最底部或者最頂部。相對地,before和after將把一個元素注入到另外一個元素的頂部或者底部,但是不是注入到元素內部。

因此,讓我們把元素順序改變為a-c-b。由于我們不需要把一個元素注入到另外一個元素的內部,我們可以使用before或者after。

參考代碼: [復制代碼] [保存代碼]
  1. // 下面這句的意思是:把元素c放到元素b之前
  2. elementc.inject(elementb, 'before'); 
  3.  
  4. // 下面這句的意思是:把元素b放到元素c之后
  5. elementb.inject(elementc, 'after');

創建一個新元素

new element

你可以使用“new element”構造器來創建一個行的html元素。這和寫一個正常的html元素非常類似,只不過你需要調整一下語法,以便能夠在mootools下正常運行:

參考代碼: [復制代碼] [保存代碼]
  1. // 首先命名一個變量并聲明一個“new element”
  2. // 然后定義元素的類型(div、a、span...)
  3. var newelementvar = new element('div', {
  4.     // 在這里設置元素的所有屬性
  5.     'id''id_name',
  6.     'text''i am a new div',
  7.     'styles': {
  8.         // 在這里設置元素的所有樣式參數
  9.         'width''200px',
  10.         'height''200px',
  11.         'background-color''#eee',
  12.         'float''left'
  13.     }
  14. });

現在你就有一個元素了,你可以通過我們剛才學的inject();方法把這個元素放在頁面上的某個位置。我們從下面這個簡單的html開始:

參考代碼: [復制代碼] [保存代碼]
  1. <div id="body_wrap">
  2.     <div id="content_id">some div content</div>
  3. </div>

現在,我們把id為content_id的元素轉換為一個變量:

參考代碼: [復制代碼] [保存代碼]
  1. var bodywrapvar = $('body_wrap');

和我們剛才學的一樣,我們可以把我們創建的這個元素注入到當前的html中:

參考代碼: [復制代碼] [保存代碼]
  1. // 這句的意思是說:“把newelementvar注入到bodywrapvar內部,并放置到頂部”
  2. newelementvar.inject(bodywrapvar , 'top');

這個代碼最終可能是這樣的:

參考代碼: [復制代碼] [保存代碼]
  1. <div id="body_wrap">
  2.     <!-- 這個元素被注入到內部頂部 -->
  3.     <div id="id_name">i am a new div</div>
  4.     <div id="content_id">some div content</div>
  5. </div>

示例

為了這個例子,我們來創建一個表單,可以讓你添加一個行元素到你的html頁面。首先,建立一些文本框和按鈕。

參考代碼: [復制代碼] [保存代碼]
  1. <div id="body_wrap">
  2.         id:  <input id="id_input" name="id" />
  3.         text:  <input id="text_input" name="text" />
  4.         <button id="new_div">創建一個新的div</button>
  5. </div>

現在,我們來用mootools寫javascript來實現讓這個html表單可以插入一個新的元素到你的頁面中。首先,我們先給這個按鈕添加一個事件,并寫一個函數來包含我們的代碼:

參考代碼: [復制代碼] [保存代碼]
  1. var newdiv = function() {
  2.     // 我們將把“添加一個新元素”的代碼放在這里
  3. };
  4.  
  5. window.addevent('domready'function() {
  6.     $('new_div').addevent('click', newdiv);
  7. });

下一件事我們要做的就是指定我們要處理的變量。要使用輸入表單中的數據,我們需要使用.get();方法:

參考代碼: [復制代碼] [保存代碼]
  1. var idvalue = $('id_input').get('value');
  2. var textvalue = $('text_input').get('value');

現在,上面代碼中的變量idvalue和textvalue就包含了它們指定的輸入表單的值。由于我們需要在用戶點擊“創建一個新的div”按鈕時獲得輸入框的值,我們需要把上面的代碼放在newdiv();這個函數中。如果我們需要在這個函數外面獲得這個值,我們需要在頁面加載時獲得,而不是點擊時。

參考代碼: [復制代碼] [保存代碼]
  1. var newdiv = function() {
  2.     var idvalue = $('id_input').get('value');
  3.     var textvalue = $('text_input').get('value');
  4. };
  5.  
  6. window.addevent('domready'function() {
  7.     $('new_div').addevent('click', newdiv);
  8. });

接下里,我們需要獲得我們新元素要插入到的元素:

參考代碼: [復制代碼] [保存代碼]
  1. var newdiv = function() {
  2.     var idvalue = $('id_input').get('value');
  3.     var textvalue = $('text_input').get('value');
  4.     var bodywrapvar = $('newelementcontainer');
  5. };
  6.  
  7. window.addevent('domready'function() {
  8.     $('new_div').addevent('click', newdiv);
  9. });

我們已經有了我們的輸入表單的值了,現在我們可以創建一個新元素了:

參考代碼: [復制代碼] [保存代碼]
  1. var newdiv = function() {
  2.     var idvalue = $('id_input').get('value');
  3.     var textvalue = $('text_input').get('value');
  4.     var bodywrapvar = $('newelementcontainer');
  5.  
  6.     var newelementvar = new element('div', {
  7.         // 這將設置這個元素的id為idvalue的值
  8.         'id': idvalue,
  9.         // 這將設置這個元素的文本為textvalue的值
  10.         'html': textvalue
  11.     });
  12. };
  13.  
  14. window.addevent('domready'function() {
  15.     $('new_div').addevent('click', newdiv);
  16. });

剩下我們要做的就是把這個新元素插入到我們的頁面中了:

參考代碼: [復制代碼] [保存代碼]
  1. var newdiv = function() {
  2.         var bodywrapvar = $('newelementcontainer');
  3.         var idvalue = $('id_input').get('value');
  4.         var textvalue = $('text_input').get('value');
  5.  
  6.         var newelementvar = new element('div', {
  7.                 'id': idvalue,
  8.                 'text': textvalue
  9.         });
  10.  
  11.         // 下面這句是說:“把newelementvar插入到bodywrapvar的內部頂部”
  12.         newelementvar.inject(bodywrapvar, 'top');
  13. };
  14.  
  15. var removediv = function() {
  16.         // 這將刪除內部的html值(就是div標記類的所有東西)
  17.         $('newelementcontainer').erase('html');
  18. }
  19.  
  20. window.addevent('domready'function() {
  21.    $('new_div').addevent('click', newdiv);
  22.    $('remove_div').addevent('click', removediv);
  23. });

代碼效果演示

id:
text:

你可以試試在id文本框中輸入:ilovemilk

 

更多學習...

一定要花一些時間看一些mootools文檔中的elements這一節:

  • element這一節包含了我們這里講到的大多數內容,還有很多其它內容
  • element.style可以給你在元素樣式屬性上更多的控制權(有些東西我們將在以后的教程中深入講解)
  • element.dimentions包含了處理位置、坐標、尺寸大小等東西的工具
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼图壁县| 伊春市| 墨玉县| 阿拉善左旗| 湖北省| 惠水县| 出国| 杭州市| 栖霞市| 阿鲁科尔沁旗| 灵台县| 民丰县| 会同县| 上蔡县| 平江县| 通山县| 丰县| 保德县| 漠河县| 桑日县| 汕尾市| 阿合奇县| 西平县| 荥阳市| 儋州市| 大化| 项城市| 黔江区| 左贡县| 洪雅县| 黔东| 黄浦区| 新泰市| 清流县| 河津市| 长子县| 洪湖市| 沂水县| 杭锦后旗| 杭州市| 托克逊县|