簡體   English   中英

JavaScript innerHTML與html屬性混淆

[英]Javascript innerHTML messing with html attributes

我正在嘗試在物化模式內進行選擇。 到目前為止,一切正常,但是當我用ajax請求刷新模式選擇的內容時,選擇消失了。

經過調查,我發現innerHTML不是正確的HTML。

這是我所擁有的:

let modal = htmlResponse.find('#modal')
let modal_old = document.getElementById('modal')
console.log(modal)
console.log(modal.innerHTML)
modal_old.innerHTML = modal.innerHTML

控制台日志如下:

<div class="modal-content">
  <h4>Title</h4>
  <p>Some Text</p>
  <select id="mySelect" name="mySelect">
    <option value="" disabled selected>Select one user</option>
    <option value="2" id="2 ">Name 1</option>
    <option value="4" id="4 ">Name 2</option>
  </select>
</div>
<div class="modal-footer">
  <a href="#" class="modal-action modal-close waves-effect waves-green btn-flat">Cancel</a>
  <a href="#" class="modal-action waves-effect waves-red btn-flat btn-transfer">Ok</a>
</div>

其次是

<div class="modal-content">
  <h4>Title</h4>
  <p>Some text</p>
  <select id="mySelect" name="mySelect">
    <option value="" disabled="" selected="">Select one user</option>
    <option value="2" id="2 ">Name 1</option>
    <option value="4" id="4 ">Name 2</option>
  </select>
</div>
<div class="modal-footer">
  <a href="#" class="modal-action modal-close waves-effect waves-green btn-flat">Cancel</a>
  <a href="#" class="modal-action waves-effect waves-red btn-flat btn-transfer">Ok</a>
</div>

如我們所見, disabledselected被替換為disabled=""selected=""

更換innerHTM1之后,模態仍處於打開狀態,但是選擇不可見。

當我使用Chrome開發人員工具檢查模式(在ajax替換之后)時,我看到了第一個輸出(具有正確的選擇),但未顯示。

這是由於innerHTML還是我的用法不當引起的?

順便說一句,我正在使用最新版本的Chrome(63.0.3239.108)在macOS High Sierra(10.13.2)上進行測試。 該網站托管在docker容器中,但我不認為問題可能出在這里。

經過調查,我發現innerHTML不是正確的HTML。

這是正確的 HTML。

請參閱布爾屬性

沒有為其分配值(例如,選中)的布爾屬性隱式等效於為其分配了空字符串(即,checked =“”)的布爾屬性。 結果,它代表了真實的價值。

因此,這兩組HTML表示相同的信息,並且都正確執行。

將HTML轉換為DOM,然后要求瀏覽器將DOM轉換為HTML,將為您提供標准化的HTML,而不是原始HTML。 因此更改是正常的。


當我使用Chrome開發人員工具檢查模式(在ajax替換之后)時,我看到了第一個輸出(具有正確的選擇),但未顯示。

問題中的任何代碼都無法解釋其未顯示。 那一定是由代碼的其他部分引起的。

問題是由於在Materialize中實現了select。

我還沒有任何問題,所以我沒有正確閱讀文檔。 編寫的內容是必須使用jQuery初始化選擇。

所以我加了

$('select').material_select()

並重新初始化模態

$('.modal').material_select()

現在一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM