0

--- 皆様のおっしゃる通り ---

これは、複数のページを DOM にロードする複数ページのフォーム用です。DOM は page_2_2 と page_3_3 をロードしますが、一方には display:none のスタイル プロパティがあり、もう一方にはありません。どのスクリプトが display:none を持っているかを確認し、適切な Javascript ファイルをロードする方法でスクリプトを実行できますか? たとえば、次のようになります。

DIV ID=page_2_2 が style="display:none" の場合、page2.js をロードします。それ以外の場合、page1.js をロードしますか?


page1.js と page2.js という 2 つの Javascript ファイルがあります。

それを言うJavascriptベースのif関数が必要です

IF、親 DIV ID = page_2_2 の場合、page1.js を読み込み、親 DIV ID = page_3_3 の場合、page2.js を読み込み、それ以外の場合は何も読み込みません。

4

5 に答える 5

2

チェックを実行してからロードするだけです

if($('#page_2_2').is(":visible")){
    $.getScript("/page1.js", function(data, textStatus, jqxhr) {
       console.log(data); //data returned
       console.log(textStatus); //success
       console.log(jqxhr.status); //200
       console.log('Load was performed.');
    });
}else if($('#page_3_3').is(":visible")){
    $.getScript("/page2.js", function(data, textStatus, jqxhr) {
       console.log(data); //data returned
       console.log(textStatus); //success
       console.log(jqxhr.status); //200
       console.log('Load was performed.');
    });
}

ワーキングデモ

于 2012-04-10T12:38:16.570 に答える
2
function loadscript(divID) {
    var scriptURL;
    if (divID == "page_2_2")
       scriptURL = "page1.js";
    else if (divID == "page_3_3")
       scriptURL = "page2.js";
    $.getScript(scriptURL);
}

複雑ではありません。関数は文字列をパラメーターとして取得します。

loadscript("page_2_2") // will load page1.js
loadscript("page_3_3") // will load page2.js

文字列パラメーターとして渡した要素 ID の型は重要ではありません。


編集:

私が理解しているように、2つのdivがあり、そのうちの1つは表示値として「なし」であるため、このようにすることができます。

<div id="page_2_2" style="display:none"></div>
<div id="page_3_3"></div>

$(document).ready(function() {
    if ($('#page_2_2').is(':visible'))
        $.getScript("page1.js");
    else 
        $.getScript("page2.js");
});
于 2012-04-10T12:36:07.207 に答える
1

機能ベースのアプローチを使用することをお勧めします。ロジックを使用する場所ではなく、何に使用するかに基づいて異なるファイルにロジックを配置します。

ファイル構造の例:

/Scripts/Utils.js
/Scripts/SpecificEditor.js
/Scripts/Wysiwyg.js

wysiwyg が必要なページでは Wysiwyg.js を参照し、「SpecificEditor」が必要なページでは「SpecficEditor.js」を参照します。

あなたのアプローチでは、サイトが成長したときに管理が難しくなります。たとえば、ページ間でロジックをどのように共有しますか?

于 2012-04-10T12:37:28.360 に答える
1

div id を確認してから、スクリプト ノードをヘッダーに挿入できます。自分でテストしていません。

    if($('#[insert id]').length != 1){ inject script etc }
于 2012-04-10T12:35:08.390 に答える
0

これでうまくいくはずです:

function loadScript(filename){
 var fileref=document.createElement('script')
 fileref.setAttribute("type","text/javascript")
 fileref.setAttribute("src", filename)
 document.getElementsByTagName("head")[0].appendChild(fileref)
}

if(document.getElementById("page_2_2")===null){
 loadScript("page1.js");
}else if(document.getElementById("page_3_3")===null){
 loadScript("page2.js");
}

jQuery を使用すると少し短くなります。if-else-if ブロックを次のように変換します。

 if($(".page_2_2").length==0){
     loadScript("page1.js");
    }else if($(".page_3_3").length==0){
     loadScript("page2.js");
    }

「親」divの意味が明確ではありません。この場合、そのページの div にその ID がある場合、スクリプトが読み込まれます。同じ ID の要素を複数持つことは想定されていないので、これで問題ないと思います。それ以外の場合は、jQueryclosest()メソッドが機能します。

于 2012-04-10T12:38:11.977 に答える