最近搞的一個項目中所使用的方式比較奇怪,用Label顯示HTML內容,然后不斷地使用JS把Label的innerHTML復制到TextBox中。
但是,昨天發現了一個問題,獲取元素值的時候,有時候正常,有時候不正常,然后進入了漫長的DEBUG。。
調試過程中,監測Label和TextBox的值,發現獲取到Label的值是未被改變的,控件加載的時候是怎樣就怎樣,在頁面中是以SPAN元素顯示,在查看網頁源代碼的時候可以看到被修改了,但是在后臺無論怎么獲取都是頁面加載時賦予的未經修改之前的值。
而TextBox的值,雖然通過JS賦值可以一直獲取到最新的值,但是里面屬性好多的雙引號都不見了,而有些屬性的雙引號則保留了下來,不知道為什么。
TextBox在網頁中是INPUT元素,然后我懷疑是不是TextBox不適合用于存儲HTML代碼,然后就換了Label、HiddenField、Div、RenderControl等方法,但是都沒成功。
雖然在網頁中查看Div的innerHTML代碼是正常的,但是在服務端提取不出來,只能另想辦法。
接著我用最原始的方式,使用alert把innerHTML輸出,結果發現alert出來的結果也是沒有雙引號的,這就耐人尋味了,難道是innerHTML自動就把雙引號給去掉了?那我怎么樣才能讓他正常地顯示出來呢?
試了好久,想找個方法把HTML轉換成XHTML,最終還是以失敗告終。。
試著試著,用了好多不同的數據,嘗試不同的輸入,發現了有個屬性有時候包含雙引號,而有時候卻沒有,我立馬意識到,這是個突破點!
接著,皇天不負有心人,在多次嘗試和觀察之下,被我發現了innertHTML的規律,原來是屬性值中包含空格,則保留屬性的雙引號,否則不保留。
有了這個規律,接下來的問題就好處理了,為什么我一開始就沒觀察到這個細節呢?
新聞熱點
疑難解答