我试图在没有刷新页面的情况下为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建议。 感谢。
答案 0 :(得分:0)
您声明了两个全局变量id
和source
,但在您的函数定义中,您声明了两个具有相同名称的局部变量,因此您对全局变量的所需更改将应用于本地变量。只需重命名函数定义中的变量。
例如:
var id, source;
function assignvalue (_id, _source) {
id = _id;
source = _source;
}
答案 1 :(得分:0)
您声明id
和source
两次:一次在全局范围内,一次作为函数参数。
要覆盖函数内部全局变量的值,需要为参数使用不同的名称。
尝试
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事件等等。
所以,你几乎可以在任何地方应用它。