2016-05-12 136 views
1

我試圖在按鈕單擊上即時生成jstree。 我有一個jstree,用戶將從該樹中選擇實體。 我想在樹形格式本身的選定選項卡中顯示該樹。動態生成jstree

因此,下面的代碼工作正常,如果我使用變量又名照原樣。 但我只想顯示該字符串的第一個名稱,因爲我使用jstree json數據格式來格式化它。 然後它不起作用。 但我試圖複製並粘貼生成的文本在另一個jstree然後它的工作。 意思是它不顯示那個新的樹在旅途中,但在另一個頁面上,如果我傳遞相同的字符串,那麼它顯示我樹。

這裏是我的代碼

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
     <style> 
      html { margin:0; padding:0; font-size:62.5%; } 
      body { font-size:14px; font-size:1.4em; } 
      h1 { font-size:1.8em; } 
      .demo { overflow:auto; border:1px solid silver; min-height:100px;min-width: 400px;float: left } 
      .demo1 { overflow:auto; border:1px solid silver; min-height:100px;min-width: 400px; float: right} 
     </style> 
     <link rel="stylesheet" href="style.min.css" /> 
    </head> 

    <body><div id="frmt" class="demo"></div> 
     <div id="frmt1" class="demo1"></div> 
     <script> 
      function callGraph(akn) { 
       var c = akn + ""; 
       var spl = c.split("!"); 
       var dt = "[{\"text\":\"DC=test,DC=in\",\"children\":["; 
       var cnt = spl.length - 1; 
       for (q = 0; q < cnt; q++) { 
        if (spl[q].startsWith(",")) 
         dt += "{\"text\":\"" + spl[q].split(",")[1] + "\"},"; 
        else 
         dt += "{\"text\":\"" + spl[q].split(",")[0] + "\"},"; 
       } 
       dt += "]}]"; 
       console.log(dt); 

       $('#frmt1').jstree({ 
        'core': { 
         'data': dt; 
        }, 
        "checkbox": { 
         "whole_node": false, 
         "keep_selected_style": true, 
         "three_state": true, 
         "tie_selection": false 
        }, "search": { 
         "fuzzy": true 
        }, "plugins": ["checkbox", "search"] 
       }); 
       $('#frmt1').jstree(true).settings.core.data = dt; 
       $('#frmt1').jstree(true).refresh(); 
      } 
     </script> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
     <script src="jstree.min.js"></script> 
     <button>>></button> 

     <script> 
      $('#html').jstree(); 
      $('#frmt').jstree({ 
       'core': { 
        'data':<%= session.getAttribute("PATH")%> 
       }, 
       "checkbox": { 
        "whole_node": false, 
        "keep_selected_style": true, 
        "three_state": true, 
        "tie_selection": false 
       }, "search": { 
        "fuzzy": true 
       }, "plugins": ["checkbox", "search"] 
      }); 

      $('button').on('click', function() { 
       a = $('#frmt').jstree("get_checked"); 
       callGraph(a); 
       // window.location = "read.jsp?name="+a; 
      }); 

     </script> 

    </body> 
</html> 

回答

1

您需要刪除近雙引號和近DT反斜線雙引號。 以下將幫助你。

var dt = [{"text":"DC=test,DC=in","children":[; 
       var cnt = spl.length - 1; 
       for (q = 0; q < cnt; q++) { 
        if (spl[q].startsWith(",")) 
         dt += {"text":" + spl[q].split(",")[1] + "},; 
        else 
         dt += {"text":" + spl[q].split(",")[0] + "},; 
       } 
       dt += ]}]; 
+0

謝謝哥們......它現在工作的很好:) –