①前言
css
流程審批頁面我寫了一個公共的模板頁面,可是裏面的數據是動態添加進去的。我想在公共的頁面的js中去隱藏一個元素。java
②個人思路:jquery
我準備直接經過id去獲取元素,而後添加屬性 display:none編程
首先我經過jquery的方法: 瀏覽器
var v1 = $("#shenpiyijian"); console.log(v1) //結果爲n.fn.init()
我最初覺得這就拿到了對象,而後直接設置屬性 v1.css("display","none") 結果沒有效果。異步
後面大牛採用的是ide
var v2 = document.getElementById("shenpiyijian"); console.log(v2) //null
發現爲v2位null
測試
哦,原來是沒有拿到這個元素。對象
總結:=========get
在測試的時候能夠如今瀏覽器控制檯寫js代碼。若是有問題的時候,最好用js代碼而不是jquery代碼。由於全部瀏覽器都支持js代碼。
------------------------------------------------------------------------------------------------------------------------
後面發現沒有取到元素,因此我就按照本身的方式去ifram中去找元素。其實這根本就不是ifram的問題,網上找了一大堆。
後面找了大牛。
大牛首先在控制檯獲取了數據,而後發現能獲取,在js代碼中寫了,發現不能獲取。
估計是加載順序問題。
-----------------------------下面 ,重要一步---------------------
咱們在頁面中寫了一個button,將獲取元素的代碼寫在了一個方法中,點擊這個button,發現能獲取到數據。
-----------------------------重要一步---------------------
而後找,咱們的代碼是寫在ready裏面的,即頁面加載完成,可是爲何沒法獲取呢,後面他們說loadUrl這個方法是異步的,業務數據還沒加載完成的時候頁面js就執行完了。
而後咱們把代碼寫在了loadUrl中。這樣就是同步執行了。
總結:其實就是數據還沒加載完就執行了js。
總結:
①對於編程,是什麼就是什麼,不要猜想或無故本身加入一些本身的想法。
好比這原本不是一個ifram,非得本身認爲是一個ifram,這樣不利於去找問題。
②注意同步異步,注意方式方法。