整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript 如何訪問表單中的元素

          問表單中的元素

          每個表單中的元素,無論是文本框、單選按鈕、下拉列表框或者其他的內容,都包含在form的elements集合中。

          可以利用元素在集合中的位置或者元素的name屬性來獲得該元素的引用;

          var oForm = document.forms["myform1"]; // 獲取表單
          var oTextName = oForm.elements[0]; // 獲取第一個元素
          var oTextPasswd = oForm.elements["passwd"]; // 獲取name屬性為passwd
          var oTextComments = oForm.elements.comments; //獲取name屬性為comments的元素

          訪問表單中元素方法的匯總:

          <form name="MyForm" id="MyForm">
          <input type="text" name="MyTextA" id="MyTextA" value="Default Value A!"/>
          <input type="text" name="MyTextB" id="MyTextB" value="Default Value B!"/>
          </form>
          var MyValue = document.MyForm.MyTextB.value; //最佳的方法
          var MyValue = document.MyForm.elements[1].value;
          var MyValue = document.forms["MyForm"].MyTextB.value;
          var MyValue = document.forms["MyForm"].elements[1].value;
          var MyValue = document.forms["index"].MyTextB.value;
          var MyValue = document.forms["index"].elements[1].value;
          var MyValue = document.getElementById("MyTextB").value; //最佳的方法,符合W3C標準
          var MyValue = document.all.MyTextB.value; //經過測試等同于document.all.MyForm.MyTextB.value

          表單是否加入<div></div>標簽,都不影響上面的訪問的方式

          "MyForm"指的是表單name的值

          form表單對象的屬性和方法

          action 表單所要提交到的URL地址

          elements 數組,表單中所有表單域的集合

          enctype 表單向服務器發送數據時,數據應該使用的編碼方法,默認為application/x-www-form-urlencoded,

          如果要上傳文件,則應該使用multipart/form-data

          length 表單域的數量

          method 瀏覽器發送GET請求或者POST請求

          name 表單的名稱,即<form>標記中的name屬性

          submit() 提交表單到指定的頁面,相當于單擊submit按鈕

          reset() 重置表單中的各項到初始值,相當于單擊reset按鈕

          節內容是"VBA信息獲取與處理"教程中第八個專題"VBA與HTML文檔"的第五節。,希望想掌握這方面知識的朋友能參考我的教程學習。

          第五節 HTML文檔的訪問端口DOM (Document Object Model)

          大家好,我們繼續對HTML文檔進行學習,在前幾節中我們認識了網頁文檔上面的各種元素,那么我們又該怎么訪問他們呢,是如何實現呢?其實,HTML文檔,提供了訪問其元素的端口,這就是HTML DOM,其定義了一套標準的針對 HTML 文檔的對象訪問或操作的機制。HTML DOM 定義了所有 HTML 元素的對象和屬性,以及訪問它們的方法。換言之,HTML DOM 是關于如何獲取、修改、添加或刪除 HTML 元素的標準。

          1 HTML DOM (Document Object Model) 對象集合

          每個載入瀏覽器的 HTML 文檔都會成為 Document 對象。Document 對象使我們可以從腳本中對 HTML 頁面中的所有元素進行訪問。Document 對象是 HTML 文檔的根節點。

          特別注意:Document 對象是 Window 對象的一部分,可通過 window.document 屬性對其進行訪問。

          集合 描述

          all[] 提供對文檔中所有 HTML 元素的訪問。

          anchors[] 返回對文檔中所有 Anchor 對象的引用。

          applets 返回對文檔中所有 Applet 對象的引用。

          forms[] 返回對文檔中所有 Form 對象引用。

          images[] 返回對文檔中所有 Image 對象引用。

          links[] 返回對文檔中所有 Area 和 Link 對象引用。


          VBA直接支持調用的對象有限,如下:

          對象 描述

          Document 代表整個 HTML 文檔,可被用來訪問頁面中的所有元素

          Anchors 代表 <a> 元素集合

          Body 代表 <body> 元素

          Forms 代表 <form> 元素集合

          Frames 代表 <frame> 元素或<iframe> 元素集合

          Images 代表 <img> 元素集合

          Links 代表 <link> 元素集合

          Options 代表 <option> 元素集合(select元素里面可以直接使用)

          Cells 代表 <td> 元素集合(table元素里面可以直接使用)

          Rows 代表 <tr> 元素集合(table元素里面可以直接使用)

          All 對象集合,提供對文檔中所有 HTML 元素的訪問。


          上述VBA支持直接調用對象的元素,調用起來就非常方便了,可以用序號調用,例如forms(0),也可以按名稱/ID調用,例如forms("名稱/ID")。其他沒法直接調用對象的元素,可以間接從通用all對象集合中去調用該元素或該元素對應的dom對象。

          2 HTML DOM 文檔的節點及文檔樹

          在HTML DOM中,所有事物都是節點。DOM 是被視為節點樹的 HTML文檔的每一部分都是節點,整個文檔被定義為一個文檔節點,每個標簽是一個元素節點,包含在元素中的文本是文本節點,每一個元素的屬性是一個屬性節點。如下:

          1)整個文檔是一個文檔節點

          2)每個 HTML 元素是元素節點

          3)HTML 元素內的文本是文本節點

          4)每個 HTML 屬性是屬性節點

          5)注釋是注釋節點


          HTML DOM 將 HTML 文檔視作樹結構。這種結構被稱為節點樹,這時一個非常形象的比喻,根節點就是html,主干就是body等,枝干就是body內含的各種元素節點,葉子和花就是元素節點關聯的元素的屬性(屬性節點)或內含文本(文本節點)。


          通過 HTML DOM,樹中的所有節點均可通過 JavaScript 進行訪問。所有 HTML 元素(節點)均可被修改,也可以創建或刪除節點。節點樹中的節點彼此擁有層級關系。父(parent)、子(child)和同胞(sibling)等術語用于描述這些關系。父節點擁有子節點。同級的子節點被稱為同胞(兄弟或姐妹)。

          網頁文檔,可以說是由元素組合而成的,也可以說是由節點連接而成的樹構造的。節點是文檔樹結構中特有的名詞,元素是節點,但是節點不一定是元素,節點還有文檔節點、文本節點、屬性節點等;元素是元素節點的擴展,元素可以擁有屬性還有文本。初學者不是很必要糾結元素和節點的區別,這個需要甚至數據結構、類和繼承等知識。可大致理解為,同一個html dom對象,提供的兩個不同接口。如下的程序,你會發現,他既有支持node(節點)的相關屬性和方法,也提供了element(元素)的相關屬性和方法。


          Sub MYNZ()

          Dim ie, dmt, bd

          Set ie = CreateObject("InternetExplorer.Application") '創建一個IE對象

          With ie

          .Visible = True '顯示它

          .navigate "http://www.baidu.com" '加載某個頁面

          Do Until .ReadyState = 4 '等待頁面加載完畢

          DoEvents

          Loop

          Set dmt = .document '將IE瀏覽器加載的頁面文檔,賦予dmt變量

          Set bd = dmt.body '將文檔的body賦予bd變量

          End With

          End Sub


          代碼截圖:

          按F8鍵運行截圖:

          3 HTML DOM 文檔的對象屬性

          屬性是節點(HTML 元素)的值,您能夠獲取或設置。所有 HTML 元素被定義為對象,而編程接口則是對象方法和對象屬性。我們看看下面一些常見的屬性:


          1)innerHTML 屬性 對象內部的HTML代碼,是獲取元素內容的最簡單方法。innerHTML 屬性對于獲取或替換 HTML 元素的內容很有用。

          下面的代碼獲取 id="intro" 的 <p> 元素的 innerHTML:

          <script>

          var txt=document.getElementById("intro").innerHTML;

          document.write(txt);


          2)OuterHtml:對象的HTML代碼,包括對象本身的HTML標簽


          3)innerText:對象內部的文本


          4)OuterText:對象的文本,包括對象本身的文本


          5)nodeName 屬性 nodeName 屬性規定節點的名稱。

          nodeName 是只讀的

          元素節點的 nodeName 與標簽名相同

          屬性節點的 nodeName 與屬性名相同

          文本節點的 nodeName 始終是 #text

          文檔節點的 nodeName 始終是 #document


          注釋:nodeName 始終包含 HTML 元素的大寫字母標簽名。


          6)nodeValue 屬性 nodeValue 屬性規定節點的值。

          元素節點的 nodeValue 是 undefined 或 null

          文本節點的 nodeValue 是文本本身

          屬性節點的 nodeValue 是屬性值


          7)nodeType 屬性 nodeType 屬性返回節點的類型。nodeType 是只讀的。

          比較重要的節點類型有:


          元素類型 NodeType

          元素 1

          屬性 2

          文本 3

          注釋 8

          文檔 9


          以上只是給出了屬性值,大家在使用的時候要注意。


          本節知識點回向:


          什么是HTML DOM文檔的屬性,常用的屬性有哪些。


          本節參考文件:008工作表.xlsm

          積木編程的思路內涵:

          在我的系列書籍中一直在強調"搭積木"的編程思路,這也是學習利用VBA的主要方法,特別是職場人員,更是要采用這種方案。其主要的內涵:

          1 代碼不要自己全部的錄入。你要做的是把積木放在合適的位置然后去修正代碼,一定要拷貝,從你的積木庫中去拷貝,然后修正代碼,把時間利用到高效的思考上。

          2 建立自己的"積木庫"。平時在學習過程中,把自己認為有用的代碼放在一起,多積累,在用到的時候,可以隨時拿來。你的積木庫資料越多,你做程序的思路就會越廣。

          VBA的應用界定

          VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟件沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!

          我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重復我之前的經歷,我根據自己多年VBA實際利用經驗,推出了六部VBA專門教程:

          第一套:VBA代碼解決方案 是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,初學必備;

          第二套:VBA數據庫解決方案 數據庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。

          第三套:VBA數組與字典解決方案 數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。

          第四套:VBA代碼解決方案之視頻 是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程的視頻講解,聽元音更易接受。

          第五套:VBA中類的解讀和利用 這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。這套教程的領會主要是讀者的領悟了,領悟一種佛學的哲理。

          第六套教程:《VBA信息獲取與處理》是一部高級教程,涉及范圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程序信息獲得、隨機信息的利用、電子郵件的發送、VBA互聯網數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定制工作表信息函數等等內容。

          大家可以根據以上資料1→3→2→6→5或者是4→3→2→6→5的順序逐漸深入的逐漸學習。教程提供講解的同時提供了大量的積木,如需要可以WeChat: NZ9668


          學習VBA是個過程,也需要經歷一種枯燥的感覺

          如太白詩云:眾鳥高飛盡,孤云獨去閑。相看兩不厭,只有敬亭山。學習的過程也是修心的過程,修一個平靜的心。在代碼的世界中,心平靜了,心情好了,身體自然而然就好。心靜則正,內心里沒有那么多邪知邪見,也就沒有那么多妄想。利人就是利己。這些教程也是為幫助大家起航,助上我自己之力,我的上述教程是我多的經驗的傳遞,

          "水善利萬物而不爭",綿綿密密,微則無聲,巨則洶涌。學習亦如此,知道什么是自己所需要的,不要蜷縮在一小塊自認為天堂的世界里,待到暮年時再去做自欺欺人的言論。要努力提高自己,用一顆充滿生機的心靈,把握現在,這才是進取。越是有意義的事情,困難會越多。愿力決定始終,智慧決定成敗。不管遇到什么,都是風景。看淡紛爭,看輕得失。茶,滿也好,少也好,不要計較;濃也好,淡也好,其中自有值得品的味道。去感悟真實的時間,靜下心,多學習,積累福報。而不是天天混日子,也不是天天熬日子。在后疫情更加嚴峻的存量殘殺世界中,為自己的生存進行知識的儲備,特別是新知識的儲備。學習時微而無聲,利用時則巨則洶涌。

          每一分收獲都是成長的記錄,怎無憑,正是這種執著,成就了朝霞的燦爛。最后將一闕詞送給致力于VBA學習的朋友,讓大家感受一下學習過程的枯燥與執著:


          浮云掠過,暗語無聲,

          唯有清風,驚了夢中啼鶯。

          望星,疏移北斗,

          奈將往事雁同行。

          阡陌人,昏燈明暗,

          忍顧長亭。

          多少VBA人,

          暗夜中,悄聲尋夢,盼卻天明。

          怎無憑!


          回向學習利用VBA的歷歷往事,不勝感慨,謹以這些文字給大家,分享我多年工作實際經驗的成果,隨喜這些有用的東西,給確實需要利用VBA的同路人。


          分享成果,隨喜正能量

          者:社會主義接班人cnblogs.com/5ishare/p/10461073.html

          用戶權限管理一般是對用戶頁面、按鈕的訪問權限管理。Shiro框架是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理,對于Shiro的介紹這里就不多說。本篇博客主要是了解Shiro的基礎使用方法,在權限管理系統中集成Shiro實現登錄、url和頁面按鈕的訪問控制。

          一、引入依賴

          使用SpringBoot集成Shiro時,在pom.xml中可以引入shiro-spring-boot-web-starter。由于使用的是thymeleaf框架,thymeleaf與Shiro結合需要 引入thymeleaf-extras-shiro。

          二、增加Shiro配置

          有哪些url是需要攔截的,哪些是不需要攔截的,登錄頁面、登錄成功頁面的url、自定義的Realm等這些信息需要設置到Shiro中,所以創建Configuration文件ShiroConfig。

          ShiroDialect這個bean對象是在thymeleaf與Shiro結合,前端html訪問Shiro時使用。

          三、自定義Realm

          在自定義的Realm中繼承了AuthorizingRealm抽象類,重寫了兩個方法:doGetAuthorizationInfo和doGetAuthenticationInfo。doGetAuthorizationInfo主要是用來處理權限配置,doGetAuthenticationInfo主要處理身份認證。

          這里在doGetAuthorizationInfo中,將role表的id和permission表的code分別設置到SimpleAuthorizationInfo對象中的role和permission中。

          還有一個地方需要注意:@Component("authorizer"),剛開始我沒設置,但報錯提示需要一個authorizer的bean,查看AuthorizingRealm可以發現它implements了Authorizer,所以在自定義的realm上添加@Component("authorizer")就可以了。

          四、登錄認證

          1.登錄頁面

          這里做了一個非常丑的登錄頁面,主要是自己懶,不想在網上復制粘貼找登錄頁面了。

          2.處理登錄請求

          在LoginController中通過登錄名、密碼獲取到token實現登錄。

          五、Controller層訪問控制

          1.首先來數據庫的數據,兩張圖是用戶角色、和角色權限的數據。




          2.設置權限

          這里在用戶頁面點擊編輯按鈕時設置需要有id=002的角色,在點擊選擇角色按鈕時需要有code=002的權限。

          @RequestMapping(value = "/edit",method = RequestMethod.GET)
           @RequiresRoles("002")//權限管理;
           public String editGet(Model model,@RequestParam(value="id") String id) {
           model.addAttribute("id", id);
           return "/user/edit";
           }
          


          @RequestMapping(value = "/selrole",method = RequestMethod.GET)
           @RequiresPermissions("002")//權限管理;
           public String selctRole(Model model,@RequestParam("id") String id,@RequestParam("type") Integer type) {
           model.addAttribute("id",id);
           model.addAttribute("type", type);
           return "/user/selrole";
           }
          

          當使用用戶001登錄時,點擊編輯,彈出框如下,提示沒有002的角色

          點擊選擇角色按鈕時提示沒有002的權限。

          當使用用戶002登錄時,點擊編輯按鈕,顯示正常,點擊選擇角色也是提示沒002的權限,因為權限只有001。

          六、前端頁面層訪問控制

          有時為了不想像上面那樣彈出錯誤頁面,需要在按鈕顯示上進行不可見,這樣用戶也不會點擊到。前面已經引入了依賴并配置了bean,這里測試下在html中使用shiro。

          1.首先設置html標簽引入shiro

          <html xmlns:th="http://www.thymeleaf.org"
           xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
          

          2.控制按鈕可見

          這里使用shiro:hasAnyRoles="002,003"判斷用戶角色是否是002或003,是則顯示不是則不顯示。

           <div class="layui-inline">
           <a shiro:hasAnyRoles="002,003" class="layui-btn layui-btn-normal newsAdd_btn" onclick="addUser('')">添加用戶</a>
           </div>
           <div class="layui-inline">
           <a shiro:hasAnyRoles="002,003" class="layui-btn layui-btn-danger batchDel" onclick="getDatas();">批量刪除</a>
           </div>
          

          當001用戶登錄時,添加用戶、批量刪除按鈕都不顯示,只顯示查詢按鈕。

          當002用戶登錄時,添加用戶、批量刪除按鈕都顯示

          七、小結

          這里只是實現了Shiro的簡單的功能,Shiro還有很多很強大的功能,比如session管理等,而且目前權限管理模塊還有很多需要優化的功能,左側導航欄的動態加載和權限控制、Shiro與Redis結合實現session共享、Shiro與Cas結合實現單點登錄等。后續可以把項目做為開源項目,慢慢完善集成更多模塊例如:Swagger2、Redis、Druid、RabbitMQ等供初學者參考。


          主站蜘蛛池模板: 无码人妻精品一区二区三区蜜桃| 日本在线观看一区二区三区| 国产福利电影一区二区三区,免费久久久久久久精 | 久久精品中文字幕一区| 波多野结衣一区二区三区aV高清| 上原亚衣一区二区在线观看| 国产精品女同一区二区| 精品无码国产一区二区三区AV| 精品无码人妻一区二区三区品| 亚洲色精品VR一区区三区| 在线精品一区二区三区电影| jizz免费一区二区三区| 免费精品一区二区三区第35| 亚洲av无码成人影院一区| 一本岛一区在线观看不卡| 国产成人久久精品一区二区三区| 无码国产精品一区二区免费虚拟VR| 免费看无码自慰一区二区| 日本精品高清一区二区| 91秒拍国产福利一区| 激情啪啪精品一区二区| 色窝窝无码一区二区三区色欲| 欧美av色香蕉一区二区蜜桃小说| 亚洲免费一区二区| 日本视频一区在线观看免费| 波霸影院一区二区| 国产精品视频一区二区三区经 | 中文字幕在线无码一区| 中文字幕乱码一区久久麻豆樱花| 亚洲一区精品伊人久久伊人| 欧洲无码一区二区三区在线观看| 国产一区二区三区免费在线观看| 无码精品人妻一区二区三区中| 日本精品一区二区在线播放 | 久久久精品人妻一区二区三区四| 国产一区在线观看免费| 91视频国产一区| 国产成人一区二区三区| 一区二区中文字幕在线观看| 伊人激情AV一区二区三区| 久久4k岛国高清一区二区|