[英]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.