为Javascript变量赋值

时间:2014-04-28 06:00:14

标签: javascript global-variables

我试图在没有刷新页面的情况下为javascript变量赋值,但它不起作用。 考虑一下例子:

<head>
    <script type="text/javascript">
        var id='';
        var source='';

        function assignvalue(_id,_source){

            //open div load in dialog box
               id = _id; 
               source = _source;
        }
    </script>
</head>
<body>
    <div id='load'></div>
    <script>
        _login.push(['login', 'callback_uri', 'http://localhost/Login/index/?source='+source+'&id='+id']);
    </script>

    <a href='' onclick="assignvalue('1','fromwhere');"></a>
</body>

在头部定义一些变量全局和onclick一个标签我打开div与加载ID和具有新值的全局变量。但新的值不分配给divs javascript.Any建议。 感谢。

4 个答案:

答案 0 :(得分:0)

您声明了两个全局变量idsource,但在您的函数定义中,您声明了两个具有相同名称的局部变量,因此您对全局变量的所需更改将应用​​于本地变量。只需重命名函数定义中的变量。

例如:

var id, source;

function assignvalue (_id, _source) {
    id = _id;
    source = _source;
}

答案 1 :(得分:0)

您声明idsource两次:一次在全局范围内,一次作为函数参数。

要覆盖函数内部全局变量的值,需要为参数使用不同的名称。

尝试

function assignvalue(_id, _source) {
  id = _id;
  source = _source;
}

要在点击链接时执行_login功能,您只需在assignValue中调用它:

function assignvalue(id, source) {
   _login.push(['login', 'callback_uri', 'http://localhost/Login/index/?source='+source+'&id='+id']);
}

在这种情况下,将函数assignvalue重命名为login

并不是一个坏主意。

答案 2 :(得分:0)

因为传递值的方式不能

function assignvalue(id,source)

因为此处函数中的id和source将成为局部变量。

请将解析中的变量替换为其他名称,以便它可以正常工作,即

function assignvalue(passID,passSource){
    id = passID;
    source = passSource;
    console.log(id+" "+source);
}

然后全局变量值将改变。

答案 3 :(得分:0)

是的,无论你写的是什么都是正确的。

但是当您点击 HyperLink 时,它会自动刷新页面。 在这里,您希望在单击Hyper链接时禁用该自动刷新。为此您可以修改您的代码,如下所示:

<html>
<head>
    <script>

      var id,source;
      function assignValue(_id,_source){
        id = _id;
        source = _source;
        alert(_id+" and also "+_source);
      }
    </script>
</head>
<body>
    <script>
     alert(id+" I am in Body "+source);
    </script>
    <a href="javascript:assignValue('1','fromWhere');">Hello</a>
</body>

或者你可以尝试这个

<html>
<head>
    <script>

      var id,source;
      function assignValue(_id,_source){
        id = _id;
        source = _source;
        alert(_id+" and also "+_source);
        return false;
      }
    </script>
</head>
<body>
    <script>
     alert(id+" I am in Body "+source);
    </script>
    <a href="" onclick="return assignValue('1','fromWhere')">Hello</a>
</body>

额外信息: 要覆盖默认的浏览器功能,只需返回false。 不仅在这里,几乎你可以在很多情况下应用它。 其中一种情况是禁用右键单击(简单)只是

oncontextmenu= return false;

另一种情况是禁用KeyPress事件等等。

所以,你几乎可以在任何地方应用它。