我有一个链接,点击链接我想将一个标志变量的值设置为1.这可能吗?喜欢
<a id='ctr' href='#' onclick='flag=1'> Hello </a>
还有如何在同一行上编写onclick事件的函数,而不是
<a id='ctr' href='#' onclick='call_this();'> Hello </a>
function call_this(){
flag=1;
}
我可以在onclick行中使用call_this函数吗?
EDIT2
现在我有这样的代码。在onclick事件中,值正确地存储在$ selectedId中。但是当我尝试在url中传递该值时,我没有得到正确的值。传递for循环中的最后一个值。
<script type="text/javascript">
$(document).ready(function(){
<?php foreach ($Forms as $r): ?>
$("<a id='<?php echo $ctr['Form']['id'];?> href='#' onclick='flag=1'> Hello </a>").appendTo("#header").click(function(){
<?php $selectedId=$r['Form']['id'];?>
alert("selId: "+<?php echo $selectedId;?>);//here the selected value is echoed
});
</script>
<a href="http://localhost/Example/new/export?height=220&width=350&id=<?php echo $selectedId;?>" class="thickbox button" title= "Export" >Export</a>
这里id传递为4,这是php for循环中的最后一个值。
答案 0 :(得分:8)
由于您的锚元素上有ID,因此您可以轻松找到它并绑定事件。
如果这是一个简单的动作,你可以使用匿名函数,而不必在全局范围内声明一个函数:
window.onload = function () {
// Bind events...
document.getElementById('ctr').onclick = function () {
flag1 = 1;
return false; // stop the browser from following the link
};
// ....
};
编辑:查看您的编辑时,jQuery document.ready事件会在页面加载时触发,此时您的标记仍然已分配null
。
请注意,您只是将锚元素添加到DOM中,然后创建一个if语句。
由于您使用jQuery,您可以使用它将click事件绑定到新创建的元素:
var flag=null;
$(document).ready(function(){
$('<a id="ctr" href="#"> Hello </a>').appendTo('#header').click(function () {
flag = 1;
e.preventDefault(); // stop the browser from following the link
});
});
您可以这样做,因为appendTo函数返回新创建的DOM元素,您可以直接将事件绑定到它。
答案 1 :(得分:2)
是的,很少调整它应该工作。但是你应该知道使用javascript的最佳做法是在外部文件中使用 ALL 你的javascript。这使您的html“干净”,使编辑更容易,并让您更好地了解正在发生的事情。
文件内容my.html:
<html>
<head>
<title>hello :-)</title>
<script language="javascript" src="my.js" type="text/javascript"></script>
</head>
<body>
<a href="#" id="ctr">Set var value</a><br />
<a href="#" id="check">Check var value</a>
</body>
</html>
my.js文件的内容:
var flag = 0;
function init()
{
var ctr_element = document.getElementById('ctr');
ctr_element.onclick = function()
{
flag = 1;
return false;
}
var check_element = document.getElementById('check');
check_element.onclick = function()
{
alert(flag);
return false;
}
}
window.onload = init;
PS。更好的做法是使用类,因此您意外覆盖变量的风险较小。 (特别是在使用第3部分库时)。 但是我建议你把它留给另一天,当你对自己的技能充满自信时。
如果您对编写crossbrowser兼容代码感兴趣,可能需要查看prototype,jquery或dojo等库。 (还有更多)他们让你的生活变得如此简单: - )
答案 2 :(得分:1)
是的,是的。
为了测试#1,我添加了一个这样的警告:
<a id='ctr' href='#' onclick='flag=1; alert(flag);'>Hello</a>
为了测试编号#2,我还添加了警告:
<a id='ctr' href='#' onclick='function call_this() { flag=1; alert(flag); } call_this();'>Hello</a>
答案 3 :(得分:0)
这是可能的,但这不是一个好主意。
在内联事件中散布代码会导致代码复杂且难以理解。
答案 4 :(得分:0)
是的,你可以在onclick中设置标志(但这个标志应该是全局的)
<script>var flag=null;</script>
<a id='ctr' href='#' onclick='flag=1'> Hello </a>
是的,你可以定义函数内联。
<a id='ctr' href='#' onclick='function call_this(){flag=1;};call_this();'> Hello </a>
但我必须警告你,这不是正确的设计。最好在js文件中包含所有javascript。并且只设置处理程序。
答案 5 :(得分:0)
你可以在元素onclick属性中同时拥有两个JS代码,但通常这是一个丑陋的解决方案,你应该避免它。最好将所有JS脚本放在单独的块或单独的文件中,然后从那里调用它。