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?


我有两个 Javascript 文件...称为 page1.js 和 page2.js。

我需要一个基于 Javascript 的 if 函数

如果父DIV ID = page_2_2,则加载page1.js,如果父DIV ID = page_3_3,则加载page2.js,否则不加载。

4

5 回答 5

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 类型并不重要。


编辑:

据我了解,您有两个 div,其中一个将“none”作为显示值,因此您可以这样做。

<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 回答
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 回答
1

您可以检查 div id,然后将脚本节点注入标头。自己没有测试过。

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

我建议使用基于功能的方法,根据使用它的用途而不是使用它的位置将逻辑放在不同的文件中。

示例文件结构:

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

在需要所见即所得的页面上,您将引用 Wysiwyg.js,在需要“SpecificEditor”的页面上,您将引用“SpecficEditor.js”。

使用您的方法,您的网站在增长时将难以管理。例如,您如何在页面之间共享逻辑?

于 2012-04-10T12:37:28.360 回答
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 回答