基于Javascript中的变量值在页面重新加载后分配类

基于Javascript中的变量值在页面重新加载后分配类,javascript,jquery,joomla3.0,Javascript,Jquery,Joomla3.0,我目前正在开发一个新的Joomla网站。在创作过程中,我偶然发现了一个让我头疼的问题: 我需要en-或禁用三个模块的基础上,用户点击三个链接之一。从理论上讲,一切似乎都很简单:创建三个具有唯一ID的链接,创建一个简短的javascript代码片段,最后将变量值保存到本地存储,以便在重新加载页面后可以看到所选选项 这是我迄今为止创造的: HTML: Javascript: <script type="text/javascript"> var clickedclass =

我目前正在开发一个新的Joomla网站。在创作过程中,我偶然发现了一个让我头疼的问题:

我需要en-或禁用三个模块的基础上,用户点击三个链接之一。从理论上讲,一切似乎都很简单:创建三个具有唯一ID的链接,创建一个简短的javascript代码片段,最后将变量值保存到本地存储,以便在重新加载页面后可以看到所选选项

这是我迄今为止创造的:

HTML:


Javascript:

<script type="text/javascript">
var clickedclass = 0
clickedclass = localStorage.getItem(classvar)

jQuery(document).ready(function(){    
    jQuery('#no1').click(function() {
        localStorage.setItem(classvar, 1);
    });
});

if (clickedclass == 0)
{ document.write ("Variable is 0") }
else if (clickedclass == 1)
{
jQuery('#no1').addClass('active');
document.write ("Variable is 1")
}
else if (clickedclass == 2)
{ document.write ("Variable is 2") }
else if (clickedclass == 3)
{ document.write ("Variable is 3") }
</script>

var clickedclass=0
clickedclass=localStorage.getItem(classvar)
jQuery(文档).ready(函数(){
jQuery('#no')。单击(函数(){
setItem(classvar,1);
});
});
如果(clickedclass==0)
{document.write(“变量为0”)}
else if(clickedclass==1)
{
jQuery('#no1').addClass('active');
document.write(“变量为1”)
}
否则如果(clickedclass==2)
{document.write(“变量为2”)}
否则如果(单击类==3)
{document.write(“变量为3”)}
if/elseif语句本身是有效的,我以前测试过它。更改变量的值不起作用,将更改保存到本地存储也不起作用。总而言之,似乎所有jQuery语句都不起作用。我使用“jQuery”而不是美元符号,因为Joomla不会识别带有美元符号的jQuery命令。我的代码中有什么错误


提前感谢您的帮助

如果使用jQuery更改变量的值,则可以尝试。将click事件包装到
jQuery(文档)中时,click()会起作用。ready()

jQuery(document).ready(function(){    
    jQuery('#no1').click(function() {
      clickedclass = 1;
    });
});

@charlietfl的想法是正确的:您在单击处理程序中重新定义了一个新的
clickedclass
变量,因此您要修改的是这个新变量,而不是更全局的变量。从语句中删除
var
将导致javascript在更高的范围内查找同名变量,这正是您想要的

至于你的美元符号“问题”,Joomla肯定会以这种方式行事以避免冲突。许多库使用此
$
作为入口点,每个库都重新定义了它,因此拥有多个库会使它们相互破坏。因此,JQuery为您提供了另一个入口点,即
JQuery
对象。如果您仍然想使用
$
,那么您可以(而且通常应该)用以下代码限制代码的范围:

(function($) {
    //your code here using $
})(jQuery);
编辑:
编辑后,您的
classvar
变量未定义,因此在将其定义为w/e之后,该变量无法工作,您的代码似乎适合我。

您不能更改变量并在页面重新加载时期望变量将是新值,除非您使用cookie或本地存储,并且我在您的代码中看不到类似的内容:)
var clickedclass=1
在单击处理程序中创建一个与您声明的第一个变量不同的变量。阅读javascriptBojanPetkovski中的作用域和闭包:我现在添加了localStorage部分,它实际上应该可以工作-如果jQuery部分正在运行,实际上。查理:谢谢,完全错过了那个!去掉
var
或者它是一个名称相同的完全不同的变量(包含在闭包中)。谢谢你的回答,我立即尝试了这个方法。但是,jQuery部分似乎不起作用。无论如何谢谢你!非常感谢。定义变量后,一切都按它应该的方式运行-最后。还要感谢所有其他人。你们真是太棒了!没问题,以后,记得检查开发工具控制台是否有错误。浏览器应该注意到变量未定义。
(function($) {
    //your code here using $
})(jQuery);