为啥我的script函数不执行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我的script函数不执行?相关的知识,希望对你有一定的参考价值。

我是在超链接写的a()函数:<a href="#" onClick="a()">a</a>

<script language="javascript">
function a()
if(session.getAttribute("userName")==null)
out.print("您还未登录");
else
out.print("您已登录");


</script>
单击超链接一点反应都没有啊。。为什么??

参考技术A 你好!

你的问题就出现在 if(session.getAttribute("userName")==null 这一段源码上面,在js代码中不能够直接用session,你可以先把这个值用隐藏表单的方式拿到<input id="userName" value="$userName"/>然后在js代码中处理,if(document.getElementById("userName").value()== "undefind" || document.getElementById("userName").value()==null || document.getElementById("userName").value()=='')
out.print("您还未登录");

else

out.print("您已登录");


不过 个人感觉这样子处理是否登录不太妥当 如果别人禁用了JS,我认为你加一个过滤器比较好本回答被提问者采纳
参考技术B 把jsp语法和javascript语法混了。可以这样试试
<script language="javascript">
function a()
<%
if(session.getAttribute("userName")==null)

%>
out.print("您还未登录");
<%
else
%>
alert("您已登录");

<%

%>

</script>
参考技术C if(session.getAttribute("userName")==null)这里出错了。

改成
var userName = $userName;
if(userName==null||userName=="")

试试
参考技术D 先在body中写
<input type="hide" name="userName" id="userName" value="$userName" />

然后把你script里的session。getAttribute(“userName”)
改为document.getElementById("userName")
就可以了
第5个回答  2010-05-24 if(session.getAttribute("userName")==null)
out.print("您还未登录");
else
out.print("您已登录");


这段压根不是javascript语法的语句

为啥我的变量不取函数中的值?

【中文标题】为啥我的变量不取函数中的值?【英文标题】:Why does my variables dont take the value in the function?为什么我的变量不取函数中的值? 【发布时间】:2013-02-13 17:15:14 【问题描述】:

我想在屏幕上显示 var longitude en latitude 但我认为该函数是最后执行的,并且我坚持使用初始值。 目标是在屏幕上打印浏览器返回的地理位置的确切值。 谢谢!!!

<!DOCTYPE html>


<head>

<script>
var longitude = "10";
var latitude = "20";
</script>




</head>
<html>
<body  onload="getLocation()">


<script>
var longitude = "30";
function getLocation() 

    if (navigator.geolocation) 
            navigator.geolocation.getCurrentPosition(function(position)
                latitude = position.coords.latitude;
                longitude = position.coords.longitude;
                alert('aaab:' +longitude);
    );
    else 
                   alert("Geolocation API is not supported in your browser.");
    
    

</script>



<script>
alert("ccc");
document.write (longitude);
document.write (latitude);

</script>
</body>
</html>

我知道它在函数内工作,但有什么方法可以在外部使用这些变量?我只想能够将它们存储在一个可以在任何地方调用的全局变量中。谢谢

【问题讨论】:

【参考方案1】:

document.write 在更新它的代码运行之前被执行。您需要像这样在回调中执行 document.write:

<!DOCTYPE html>
  <head>
    <script type='text/javascript'>
      var longitude = "10";
      var latitude = "20";

      function getLocation() 
        if (navigator.geolocation) 
          navigator.geolocation.getCurrentPosition(function(position)
            latitude = position.coords.latitude;
            longitude = position.coords.longitude;

            document.write(latitude+" / "+longitude);  
          );
        else
          alert("Geolocation API is not supported in your browser.");
        
      

    </script>
  </head>
  <body onload="getLocation()">

  </body>
  </html>

【讨论】:

我知道它在函数内工作,但是有什么方法可以在外面使用这些变量吗?我只想能够将它们存储在一个可以在任何地方调用的全局变量中。谢谢 全局变量被设置为纬度和经度。您的问题很简单,直到您的原始 document.write 运行之后才会发生。为了清楚起见:jsfiddle.net/Asvjg 好的,谢谢,我明白了【参考方案2】:

试试这个:

function getLocation() 

    if (navigator.geolocation) 
            navigator.geolocation.getCurrentPosition(displayLocation);
    else 
                   alert("Geolocation API is not supported in your browser.");
    


    function displayLocation(position) 
       latitude = position.coords.latitude;
       longitude = position.coords.longitude;
       alert('aaab:' +longitude);
    

【讨论】:

【参考方案3】:

在您编写经度和纬度时,可能尚未调用地理位置回调。也许您可以使用 jQuery 将正确的值写入屏幕...

<script>
    var longitude = "30";
    function getLocation() 

        if (navigator.geolocation) 
            navigator.geolocation.getCurrentPosition(function(position)
                latitude = position.coords.latitude;
                longitude = position.coords.longitude;
                //alert('aaab:' +longitude);

                // Use jQuery to write your values to the html
                $("#longitude").html(longitude);
                $("#latitude").html(latitude);
            );
        else 
            alert("Geolocation API is not supported in your browser.");
        
    

</script>

<html>
    ...
    <body onload="getLocation()">
        <div id="longitude"></div>
        <div id="latitude"></div>
    </body>
</html>

【讨论】:

正确,对getCurrentPosition() 的调用是异步的。浏览器使用一些线索(例如您的 IP 地址)来查询地理定位服务(例如 Google)。一个快速的解决方案是将您的 document.write() 语句放在您定义的回调中。我将编辑此答案以显示这一点。我自己打字,但@Syjin 打败了我 :) 你又打败了我,先生 :) 我知道它像你说的那样工作,我有“ alert('aaab:' +longitude); ”工作正常,但我需要在函数之外使用这些变量。 你可以在任何你喜欢的地方使用它们。你只需要等到getCurrentPosition() 被调用。 是的,我想,但是,我不知道该怎么做,页面首先执行正文,然后执行功能。

以上是关于为啥我的script函数不执行?的主要内容,如果未能解决你的问题,请参考以下文章

javascript 函数在函数所在的script标签下为啥不能被调用

<SCRIPT>在ASP中为啥不执行

easyui 的datagrid 的onClickCell事件为啥不执行呢?

为啥gitlab-runner执行完script停不下来?

HTML中在script中写的函数不执行,请大佬解决?

我想知道为啥我下面这段代码不执行script语言 <html> <head> <script language="javascript"> al