为Javascript变量赋值

为Javascript变量赋值,javascript,global-variables,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

我试图在不刷新页面的情况下为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>

变量id=“”;
var source='';
函数赋值(_id,_source){
//打开“在中加载div”对话框
id=_id;
源=_源;
}
_login.push(['login','callback\u uri','http://localhost/Login/index/?source='+source+'&id='+id']);
在head中,全局定义一些变量,单击一个标记,我打开了带有load id的div,并使用带有新值的全局变量。但是在divs javascript下面没有为其分配新值。有什么建议吗。
谢谢。

您声明了两个全局变量
id
source
,但在函数定义中,您声明了两个同名的局部变量,因此您对全局变量所做的更改将应用于局部变量。只需重命名函数定义中的变量

例如:

var id, source;

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

您将声明
id
source
两次:一次在全局范围内,一次作为函数参数

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

试一试

要在单击链接时执行
\u login
功能,只需在
assignValue
中调用它:

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

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

并不是一个坏主意,因为传递值的方式无法更改

function assignvalue(id,source)
此处函数中的原因id和源将变为局部变量

请将解析中的变量替换为其他名称,以使其工作,即

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

然后全局变量值将改变。

是的,您所写的内容都是正确的

但当你点击超链接时,它会自动刷新页面。 在此处,您希望在单击超链接时禁用自动刷新。为此,您可以修改代码,如下所示:

<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>
另一种情况是禁用按键事件等等


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

这基本上与上面的答案相同,只是变量名和控制台登录不同。我已经更新了我的问题,并按照你的解决方案工作。但它仍然不起作用。当页面加载时,正文内的脚本首次加载,而不是在单击标签之后,这就是问题。我已经更新了我的问题并且按照你的解决方案工作。仍然不工作。正文内的脚本在页面加载时第一次加载,而不是在点击标签后加载。这就是问题所在。抱歉,我不能这样做,因为它是一个小部件,应该在div下面,所以小部件应该加载。我已经更新了我的问题,并按照你的解决方案工作。仍然内部的脚本不工作正文第一次加载是在页面加载时,而不是在单击标记后加载,这是问题所在
<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>
oncontextmenu= return false;