2016-07-04 120 views
1

這裏是我的第一個問題,我一直在尋找很多研究的小線索,但沒有找到任何答案,希望它不是一件愚蠢的事情。我正在處理一個處理XML文件的網站(數據存儲在一個數組中,然後顯示並完全可編輯)。將html元素插入到以前動態插入的元素中?

直到現在,儘管我發現一些麻煩,一切正常。

我在我的數組上循環獲取所有必需的字符串,然後創建jQuery對象(例如我附加到特定的div的$("<input id='xxx' value='yyy' />"))。

第一次啓動時,我有一個空的#insertXml div(寫在我的html中)。 一個我的xml文件解析和我的數組準備好了,我動態創建一個#content div附加到我的#insertXml,然後爲每個索引我將它的密鑰寫入#keyInput「div(動態插入,只有一次),然後在#語言1格(靜止型動態插入),在#LANG2 DIV 2,等

語言1,LANG2等1個值是變量,所以它是寫:

$("<input .../>").appendTo("#"+langN); 

,其中每個循環langN變化。

一切正常!!第一次顯示:/

麻煩的是,當我使用我的函數創建新的數據。 我首先在模態窗口上工作,通過偵聽器函數檢索用戶值,然後將其傳遞給另一個將其推入陣列的函數。 我調試它,工作,我的數組正確更新。

然後我想簡單地刷新我的頁面,所以我嘗試,就像我以前爲我的整個數據所做的那樣,添加一些輸入。

它工作正確,然後我的#keyInput div,但不是我的#lang divs!?!?! 不管我怎麼嘗試(甚至忘記jQuery和使用html document.xxx函數),都沒辦法。

在調試過程中,我所有的變量都可以,在執行「appendTo」的時候它什麼都不做,除了keyInput div。

我試着刪除#content div,並重新啓動整個displayInit()方法(繁重的操作,但只是看到)和同樣的該死的問題:只有#keyInput被正確刷新。

我讀到的唯一可能很有趣的事情是,動態創建的元素(通過腳本)沒有在DOM中註冊,因此無法找到它。 但在這種情況下,我的顯示器嘗試都不應該工作,所以?

提前,非常感謝您關注我的噩夢。

附:我的html + JS函數。 my DOM

function displayInsert() { 
 

 
    var firstLang = stripXmlExtension(paths[0]); // same keys on every language, so we grab the 1st one 
 
    var lastKeyIndex = mapXml[firstLang].key.length - 1; 
 
    var keyToInsert = mapXml[firstLang].key[lastKeyIndex]; // == last insertion 
 

 
    var inputKey = "<input size=35 type=text id=k" + lastKeyIndex + " value=" + stripHTML(keyToInsert.replace(/ /g, " ")) + " readonly />"; 
 
    // while appending tag to the HTML content page, we add a dblclick listener that will morph the input into a textarea when double dblclicked 
 
    $(inputKey).css("margin-bottom", "15px").dblclick(function (e) { 
 
     e.preventDefault(); 
 
     tempEditId = $(this).attr('id'); 
 
     $(".modal-body").html("<textarea cols='65' rows='10' id='txt" + $(this).attr('id') + "'>" + $(this).val() + "</textarea>"); 
 
     $("#modalEdit #btn-correct").css("display", "none"); 
 
     $("#modalEdit").modal({backdrop: "static"}); 
 
    }).appendTo("#keyInput"); 
 

 

 
    for (var i = 0; i < paths.length; i++) { 
 
     var lang = stripXmlExtension(paths[i]); 
 
     var lastValueIndex = mapXml[lang].value.length - 1; 
 
     var valueToInsert = mapXml[lang].value[lastValueIndex]; // == last insertion 
 

 

 
     var inputValue = "<input size=35 type=text id=" + lang + "---" + lastValueIndex + " value=" + stripHTML(valueToInsert.replace(/ /g, " ")) + " readonly />"; 
 
     // while appending tag to the HTML content page, we add a dblclick listener that will morph the input into a textarea when double clicked 
 
     $(inputValue).css("margin-bottom", "15px").dblclick(function (e) { 
 
      e.preventDefault(); 
 
      tempEditId = $(this).attr('id'); 
 
      $(".modal-body").html("<textarea cols='65' rows='10' id='txt" + $(this).attr('id') + "'>" + $(this).val() + "</textarea>"); 
 
      $("#modalEdit #btn-correct").css("display", "none"); 
 
      $("#modalEdit").modal({backdrop: "static"}); 
 
     }).appendTo("#" + lang); 
 

 
    } 
 

 
}

+0

尋求調試幫助的問題(「爲什麼代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的_shortest code_。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例。](http://stackoverflow.com/help/mcve) – nbrooks

回答

0

OMG,我很慚愧。從在了已複製相同ID的模態窗口生成的輸入

我的問題就來了...... 我希望這將是一個有點複雜^^

解決了!