为什么以下javascript无法在Internet Explorer& Mozilla但在谷歌浏览器中工作正常吗?

时间:2015-02-05 18:24:27

标签: javascript jquery google-chrome internet-explorer firefox

我在我的javascript中使用session属性,然后在if-else中使用它。 假设用户使用一些锚标签点击锚标记,该脚本就会运行。

<a id="someId" href="/someurl" onClick="checkSession(this.id)">Link</a>

<a id="someOtherId" href="/someurl" onClick="checkSession(this.id)">Link2</a>

在体内

<script type="text/javascript">

    function checkSomething(clickedId){     

        event.preventDefault();     
        var value= <%=(int) session.getAttribute("key")%>;

        if(value != -1){
            window.location = $('#'+clickedId).attr('href');
        }else {
            alert("Please Select a value first then click on the link.");
            $("#someInput").focus();
        }

    };


</script>

脚本在chrome上完美运行但在mozilla和IE上失败。 在Mozilla上我可以看到锚标签已经与该javascript绑定但是它没有运行。

2 个答案:

答案 0 :(得分:1)

传递事件而不是ID。此外,您不需要jQuery来获取元素的href。只需使用vanilla JavaScript:

<a id="someId" href="/someurl" onClick="checkSession(event)">Link</a>   
<a id="someOtherId" href="/someurl" onClick="checkSession(event)">Link2</a>

<script>
    function checkSession(event) {
        event.preventDefault();
        var clickedId = event.target.id;
        var href = event.target.href; 

        // etc
    }
</script>

答案 1 :(得分:0)

或者你可以:

<a id="someId" href="javascript:checkSession('/someurl')">Link</a>   
<a id="someOtherId" href="javascript:checkSession('/someOtherurl')">Link2</a>

<script>
    function checkSession(url) {
      var value= <%=(int) session.getAttribute("key")%>;

      if(value != -1){
          window.location = url;
      } else {
          alert("Please Select a value first then click on the link.");
          $("#someInput").focus();
      }

    }
</script>
相关问题