簡體   English   中英

加載此js數組時我做錯了什么?

[英]What am I doing wrong loading this js array?

我已經添加了另一個問題,特別是關於我認為這里存在的問題,但是我認為更多細節會有所幫助。 所以,這是我的代碼:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba jQuery no event</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="loadUrls.php"></script>
<script type="text/javascript">
jQuery(document).ready(function() { 

    jQuery("a").click(function(ev) {

        //ev.preventDefault();

        // Defino las variables
        var currentAnchor = jQuery(this);
        var currentHref = currentAnchor.attr('href');
        var curHref = currentHref.split('/');
        var curHrefFinal = curHref[2].replace('www.', '');

        if(jQuery.inArray(curHrefFinal,urlsFinal) > -1) {
            // Evito que se visite el link directo
            ev.preventDefault();

            if (ev.metaKey || ev.ctrlKey) {
                // Redirecciono el navegador a la página que queremos
                window.open(currentHref + "?a=esta-funcionando-tambien");
            } else {
                // Redirecciono el navegador a la página que queremos
                window.location = currentHref + "?a=esta-funcionando";
            };
        };
    });
});
</script>
</head>

<body>
<p>Hola, <a href="http://www.avantrip.com">este es</a> un link.</p>
<p>Hola, <a href="http://espana.aula365.com/es/">este es</a> otro link.</p>
<p>Hola, <a href="http://stackoverflow.com">este es</a> otro link.</p>
<p>Hola, <a href="http://www.airborn.com.ar">este es</a> otro link.</p>
</body>
</html>

loadUrls.php文件正在輸出:

jQuery(document).ready(function() { 
    var urlsFinal = [
        "avantrip.com.ar",
        "avantrip.com",
        "espana.aula365.com",
        "almashopping.com",
        "airborn.com.ar",
        "1and1.mx",
        "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com"
    ];
});

基本上,我會將所有單擊的鏈接的href屬性與從SQL數據庫動態生成的數組進行比較。 該數組需要托管在一個外部文件中,因此必須在loadUrls.php文件中。

由於某些原因,在主代碼中無法識別urlsFinal var。 如果我復制該數組並將其粘貼到主文件中,則其余的工作正常。 我找不到任何問題,但是我相信你會的。

有什么想法嗎?

謝謝!

您已經為變量創建了一個本地作用域-您應該通過使loadUrls.php只是腳本(沒有$(document).ready包裝器)將其放入全局范圍:

var urlsFinal = [
    "avantrip.com.ar",
    "avantrip.com",
    "espana.aula365.com",
    "almashopping.com",
    "airborn.com.ar",
    "1and1.mx",
    "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com"
];

將其添加到全局范圍的另一種方法(例如,由於其他原因,您需要$(document).ready閉包)是使用window.urlsFinal = [ ... ]

您需要在全局空間中定義urlsFinal 有兩種方法可以做到這一點。

方法1:使用window變量:

jQuery(document).ready(function() { 
    var urlsFinal = [
        "avantrip.com.ar",
        "avantrip.com",
        "espana.aula365.com",
        "almashopping.com",
        "airborn.com.ar",
        "1and1.mx",
        "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com"
    ];
    window['urlsFinal'] = urlsFinal;
});

方法2:在全局空間中聲明該變量,但在同一空間中對其進行初始化。

var urlsFinal;
jQuery(document).ready(function() { 
    urlsFinal = [
        "avantrip.com.ar",
        "avantrip.com",
        "espana.aula365.com",
        "almashopping.com",
        "airborn.com.ar",
        "1and1.mx",
        "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com"
    ];
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM