1

こんにちは、すべてのJavascriptとウィジェットのエキスパートです。

ウィジェットを有効にして同じページに2回含めることができるようにする方法を見つけようとして、過去2日間頭を悩ませています。

これが私がしたことです

1.driver.js(必要なものをすべてロードします)jquery、jquery-ui、wdcreate.jsをロードし、document.write呼び出しを介してtabs.jsを設定します。

2.wdcreate.js(タブリストとコンテンツを作成します)複雑なことは何もありません。UIとLIのリストだけで、wHTMLに割り当てられた3つのタブコンテンツを作成し、

document.getElementById(tabid+"_mywidget_container").innerHTML = wHTML;

3.settabs.js(理想的にはタブを有効にすることになっています)には、タブコンテナをロードするための1行しかありません

$(document).ready(function() {$( "#"+tabid+"_mywidget_container" ).tabs();});

4.index.html-(ウィジェットを含むテストページ)このページには2つのウィジェットが含まれています

<script type='text/javascript'> 
    var tabid='001';
    document.write('<scr'+'ipt type="text/JavaScript" src="http://localhost:8080/demo/driver.js"></scr'+'ipt>'); 
    </script>
    <div id="001_mywidget_container"></div>

<script type='text/javascript'> 
var tabid='002';
document.write('<scr'+'ipt type="text/JavaScript" src="http://localhost:8080/demo/driver.js"></scr'+'ipt>'); 
</script>
<div id="002_mywidget_container"></div>

ここで問題となるのは、index.htmlファイルにウィジェットを1つだけ含めるとタブがレンダリングされることです。さらに、2つまたは3つ含めると、失敗します。

何か提案や私がしなければならないことは何ですか?私はこの小さなプロジェクトをまとめて検索して問題を特定しようとしましたが、元々はプレーンなjavascriptを使用していて、jQueryに戻りました(私はJavascriptのエキスパートではありません)。これはwindow.onLoadで何かをしなければならないことを理解してください

また、settabsでは、tabidを動的に割り当てる代わりに、tabwidget idごとに1つずつ2つの呼び出しを使用すると、2つのタブコンテナが読み込まれることに注意してください。

1つのトピックの情報を表示する1つのタブコンテナ、別のトピックの別のタブコンテナなど、1つのページに複数のウィジェットを含めることができます。したがって、6つのトピックに関する情報を表示できるページを探しているユーザーには、6つのウィジェット/タブコンテナが含まれます。同じページ..。

すべてのあなたの助けに感謝します。再度、感謝します。

こちらもこちらのページです

http://www.werindia.com/demo/index1.html - widget included one time
http://www.werindia.com/demo/index2.html - widget included two times. in reality this could be any non zero number 

http://www.werindia.com/demo/driver.js
http://www.werindia.com/demo/wdcreate.js
http://www.werindia.com/demo/settabs.js

これは静的コンテナを含むページですが、実際にはこれらは動的になります

http://www.werindia.com/demo/index3.html
4

2 に答える 2

1

さて、次のことは意味がありません。

  • 実装コードと依存関係を1つのファイルにマッシュアップし、すべてを2回ロード/実行しています。

  • スクリプトタグを介して2回リンクしているだけではありません。何らかの理由で、document.writeを使用せざるを得ないと感じました

  • 2012年で、document.writeを使用しています

  • 2つのdivコンテナにアクセスしたい一般的なタブ機能がいくつかあり、何らかの理由でクラスの代わりにIDを使用しています。IDは、tabs.jsに組み込まれるタブを確立する可能性があるように見えますが、そのコードを表示していないため、私は推測することしかできません。

JavaScriptで同じことを2回発生させるために、スクリプトタグを再追加することはありません。関数を2回起動します。または、DOM要素のより一般的なカテゴリで適切な関数を実行します。

これらのコンテナにタブを作成するために必要なのは、次のとおりです。

$(document).ready(function() {$( "#"+tabid+"_mywidget_container" ).tabs();});

そうすれば、これはもっと理にかなっているでしょう:

$(document).ready(function() {$( ".tab_container" ).tabs();});

HTMLを機能させるために何が必要かわからない場合は、.tab_containerこれらすべてを理解し、基本をより深く学ぶ必要があると思います。JSをHTMLから完全に分離しておくようにしてください。ページの下部でファイルを1回リンクします。DOM API、または少なくともjQueryがどのように機能するかを学びます。JSは、解析時に単純に記述するのではなく、HTMLに基づいて動作するものと考えてください。

于 2012-12-29T07:32:02.077 に答える
0

driver.jsファイルパスをローカルホストを指しているように正しく配置し、http://www.werindia.comに変更します

以下のコードを使用してスクリプトタグを生成します

var headID = document.getElementsByTagName("head")[0];         
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://www.somedomain.com/somescript.js';
headID.appendChild(newScript);
于 2012-12-29T07:08:04.220 に答える