【问题标题】:call javascript function on link click在链接点击时调用 javascript 函数
【发布时间】:2012-11-24 08:45:00
【问题描述】:

我想在用户点击链接时设置一个 cookie 值。 我正在使用以下代码:

<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="../../Scripts/jquery.cookie.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {

        function changeLang(lang) {
            $.cookie('myCulture', lang);
            window.location.reload();
            return false;
        }
    });

</script>

HTML

  <a href="#" onclick="changeLang('da-DK')"><img src="../../Content/images/danishFlag.png" height="35px" width="35px"/></a>

  <a href="#" onclick="changeLang('sv-SE')"><img src="../../Content/images/swedishFlag.png" height="35px" width="35px"/></a>

看起来很简单的代码,但是当我点击链接时,浏览器出现错误。 它说。

ReferenceError: changeLang is not defined   

changeLang("da-DK");

我哪里做错了??

【问题讨论】:

  • 将您的函数重新定位到文档外

标签: javascript jquery html asp.net-mvc cookies


【解决方案1】:

您在文档就绪范围内定义函数,因此它不是全局的,因此在全局范围内不可用

只需删除 var 声明或使用 window.changeLang = function 即可将其定义为全局

 $(document).ready(function () {

       changeLang = function(lang) {
            document.cookie = 'myCulture' + lang;
            window.location.reload();
            return false;
        }
    });

【讨论】:

    【解决方案2】:
    $(document).ready(function () {
    });
    function changeLang(lang) {
        document.cookie = 'myCulture=' + lang;
        window.location.reload();
        return false;
    }
    

    这对你有用。

    【讨论】:

      【解决方案3】:

      请不要像这样在html中附加js函数。 您正在使用 jquery,所以只需这样做:

      $(document).ready(function () {
      
          function changeLang() {
              $.cookie('myCulture', $(this).data('lang'));
              window.location.reload();
              return false;
          }
          $('.link').on('click', changeLang);
      });
      

      然后在html中:

      <a href="#" data-lang="da-DK">...</a>
      

      【讨论】:

        【解决方案4】:

        尝试将 ChangeLang 函数移到 Document Ready 部分之外。 此外,如果使用 Firebug 在 FireFox 中运行,您可以尝试直接从控制台执行该功能。

        祝你好运

        【讨论】:

          【解决方案5】:

          在 jquery 块之外定义函数

          $(document).ready(function () {
          });
          
          function changeLang(lang) {
                  $.cookie('myCulture', lang);
                  window.location.reload();
                  return false;
              }
          

          【讨论】:

          猜你喜欢
          • 2011-12-01
          • 2010-11-18
          • 2012-12-10
          • 2014-07-24
          • 2011-06-29
          • 1970-01-01
          • 2013-01-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多