2017-04-04 13 views
0

以下のコードは、いくつかのテーブルデータを取り込むためにjsonファイルをアプリケーションに読み込みます。それは仕事を終わらせる。jqueryでレンダリングされないブートストラップ動的に作成された要素

function init_main() { 
    $('html').hide().fadeIn('slow'); 

    // popuate from index.json 
    var json = $.getJSON(chrome.extension.getURL('js/index.json'), function(json) { 
     // CREATE SETTINGS TABLE WITH GIVEN INDEX 
     for (var property in json) { 
      var table = $('<table></table>').addClass('table'); 
      var header = $('<thead></thead>').addClass('thead-inverse'); 
      var head_r = $('<tr></tr>'); 
      var h1 = $('<th></th>').text(property); 
      var h2 = $('<th></th>').text('check to remove: '); 
      head_r.append(h1); 
      head_r.append(h2); 
      header.append(head_r); 
      table.append(header); 
      var body = $('<tbody></tbody>'); 
      table.append(body); 
      for (var tag in json[property]) { 
       var body_r = $('<tr></tr>'); 
       var d1 = $('<td></td>').text(tag); 
       var d2 = $('<td></td>')  // maybe change to class? 
       $('<input />', { type: 'checkbox', id: tag}).appendTo(d2); 
       body_r.append(d1); 
       body_r.append(d2); 
       body.append(body_r); 
      } 
      $('#tableWrap').append(table); 
     } 
    }); 
} 

//bind events to dom elements 
document.addEventListener('DOMContentLoaded', init_main); 

しかし、私のHTMLマークアップの残りの部分とは異なり、のみこれらの要素は、私のCSSを変更するために、ブートストラップライブラリを使用しません。その他のHTMLマークアップでは、ブートストラップライブラリが正常に使用されます。

私は運がないコールバックの外でコードを移動しようとしました。コンソールにエラーはありません。

上記のコードスニペットでブートストラップが有効にならない理由は何ですか?

<html> 
    <head> 
     <!-- load stylesheets: Bootstrap v2.3.0 - http://twitter.github.com/bootstrap/index.html --> 
     <link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css"></link> 

     <!-- load javascript: jQuery 1.9.1 - http://jquery.com/ --> 
     <script type="text/javascript" src="../js/jquery-1.9.1.min.js"></script> 

     <!-- load javascript: Bootstrap v2.3.0 - http://twitter.github.com/bootstrap/ --> 
     <script type="text/javascript" src="../js/bootstrap.min.js"></script> 

     <!-- load stylesheets: internal --> 
     <link rel="stylesheet" type="text/css" href="../css/global.css"></link> 
     <link rel="stylesheet" type="text/css" href="../css/main.css"></link> 
    </head> 
    <body> 
     <div class="navbar"> 
     <div class="navbar-inner"> 
      <a id="home" id="active" class="brand" href="#"> 
      <!-- UNCOMMENT THE CSS VALUES TO TEST OTHER DIMENTIONS --> 
      <img src="../images/icon.png" alt=""> 
      <span class="icon-bar"></span> 
      Fluff 1.0 
      </a> 
      <a id="settings" class ="brand" href="#" > 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      Settings</a> 
      <a id="run" class ="brand" href="#" > 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      Run</a> 
     </div> 
     </div> 
     <div id="outer"> 
      <!-- Main Page --> 
      <div id="main-inner"> 
       <div id="main-title"> Fluff 1.0 </div> 
       <div id="textblock">Donate or contact block here</div> 
      </div> 
      <!-- Settings Page --> 
      <div id="settings-inner"> 
       <h5 id="directions"> <span></span> Select Tags to Remove from Automated Browser Queries </h5> 
       <div id="tableWrap"> 

       </div> 
      </div> 
      <!-- Run Page --> 
      <div id="run-inner"> 
       <table class='table'> 
        <thead> 
         <tr> 
          <td> 1 </td> 
          <td> 2</td> 
         </tr> 
        </thead> 
       </table> 
      </div> 
     </div> 

     <!-- load javascript: unique html page javascript file --> 
     <script type="text/javascript" src="../js/main.js"></script> 
    </body> 

編集:は、私はここで

は、参照のための私のhtmlでの私のスクリプトを輸入している)、それはページのロードとは何かを持っていますが、これまでのところ、私はwindow.onPageLoad(と任意の成功を見ていないと思います: sample.json - 「NUM」キーは、私は正確にあなたの問題を理解していない

{ 
    "sex": { 
     "M":{ 
       "num":13, 
      }, 
     "F": { 
       "num":13, 
      }, 
     "T": { 
       "num":0 
     } 
    }, 
    "politics": { 
     "L": { 
       "num":10, 
      }, 
     "R": { 
       "num":10, 
     } 
    }, 
    "race": { 
     "AMI":{ 
       "num":6, 
     }, 
     "ASI":{ 
       "num":7, 
     }, 
     "AFA":{ 
       "num":7, 
     }, 
     "PCI":{ 
       "num":0 
     }, 
     "WHT":{ 
       "num":2, 
       "3":"-" 
     }, 
     "HSP":{ 
       "num":5, 
       "6":"-" 
     }, 
     "MDE":{ 
       "num":6, 
     } 
    }, 
    "orientation": { 
     "STR": { 
       "num":0 
     }, 
     "GAY": { 
       "num":0 
     }, 
     "OTH": { 
       "num":0 
     } 
    }, 
    "interests": { 
     "GARD":{ 
       "num":4, 
     }, 
     "NHL":{ 
       "num":1, 
     }, 
     "NBA":{ 
       "num":1, 
     }, 
     "TECH":{ 
       "num":0 
     } 
    } 
} 
+0

なぜテーブルを作成しませんcshtmlで、javascriptを使って行だけを追加しますか? –

+0

テーブルの動的数も。 – Lamar

+0

サンプルjsonをここに配置できますか? –

答えて

0

質問やコードのいずれかには関係ありませんが、私はあなたのサンプル私を置きますn jsfiddleは使いにくいhtmlファイルを削除して読みやすくしています。間違ったコードだけがvar json = $.getJSONです。それはなぜですか?しかし、返された値はまったくありませんでした。もしそうであれば、getのような非同期関数では決して動作しません。 2番目の問題は、決してあなたの機能を呼び出さないということです!

このコードを参照し、私と一緒にあなたのアイデアを共有する:

HTMLで table id='tableWrap'にテーブルの内部

テーブルをdiv id='tableWrap'を変更することで解決

jsfiddle

+0

申し訳ありませんが、私はより明確にすべきでした。コードはjsfiddleが示すようにテーブルを正しく作成しました。問題は、コードスニペットで作成されたテーブルがブートストラップライブラリでレンダリングされないことです。しかし、ブートストラップは他のすべてのHTMLマークアップが正しく表示されているため、プロジェクトの他の部分と連携して作業しています。 – Lamar

+0

テーブルの作成に使用しているデータがjsonファイルから取得されています。だから、$ .getJSONを使ってjsonのデータファイルをvarにロードしています。 – Lamar

+0

私が理解しているように、この投稿のコードサンプルではなく、ブートストラップAPIによるテーブルを作成する必要があります。私は正しい? –

関連する問題