带有PHP变量onclick in的JS函数<;a>;标签不起作用
以下代码位于单个PHP文件中:带有PHP变量onclick in的JS函数<;a>;标签不起作用,php,javascript,html,onclick,Php,Javascript,Html,Onclick,以下代码位于单个PHP文件中: <head> <script type="text/javascript" src="jquery.js"> function pipeDelete(topicid, msgid, action) { if (topicid == 0) { var ans = confirm("Delete the topic?"); } else { var ans = confirm("Delete this comment?"
<head>
<script type="text/javascript" src="jquery.js">
function pipeDelete(topicid, msgid, action) {
if (topicid == 0) {
var ans = confirm("Delete the topic?");
} else {
var ans = confirm("Delete this comment?");
}
if (ans) {
var dest = 'msg_transact.php';
$.post(dest, {topicid:topicid, msgid:msgid, action:action}, function() {
$("#" + msgid).hide("slow");
});
}
}
</script>
</head>
<?php
// some code, $row['topic_id'] and $row['msg_id'] are integers
while ($row = mysql_fetch_assoc($result)) {
// some code
echo '<div id="' . $row['msg_id'] . '">';
$deletelink = '<a href="#" onclick="pipeDelete(\'' . $row['topic_id'] .
'\', \'' . $row['msg_id'] . '\', \'deletepost\')">Delete</a>';
// some code
echo $deletelink;
echo '</div>';
}
?>
函数pipeDelete(topicid、msgid、action){
if(topicid==0){
var ans=确认(“删除主题?”);
}否则{
var ans=确认(“删除此评论?”);
}
如果(ans){
var dest='msg_transact.php';
$.post(dest,{topicid:topicid,msgid:msgid,action:action},function(){
$(“#”+msgid).hide(“slow”);
});
}
}
问题是,当我单击“删除”链接时,页面只是重新加载(“#”附加在URL的末尾),什么也没有发生。onclick事件不会运行,也不会调用该函数。我不认为jquery或//某些代码会造成干扰,因为要做到这一点,我至少应该得到组合框,不是吗
调用JS函数时停止onclick事件的问题是什么
解决方案:编写两个单独的脚本标记——一个用于jquerysrc,另一个用于js代码。
/*javascript code*/
onclick
需要“返回false
”以防止默认操作(在#锚定之后)
现在,您似乎正在使用jQuery。 也就是说,假设您使用的是html5,为什么不编写一个非侵入性代码呢 请注意,id不能仅是HTML中的数字
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$('.deletelink').click(function(e){
e.preventDefault();
var topicid = $(this).attr('data-row'), msgid = $(this).attr('data-msg'), action = $(this).attr('data-action');
if (topicid == 0) {
var ans = confirm("Delete the topic?");
} else {
var ans = confirm("Delete this comment?");
}
if (ans) {
var dest = 'msg_transact.php';
$.post(dest, {topicid:topicid, msgid:msgid, action:action}, function() {
$("#row-" + msgid).hide("slow");
});
}
});
</script>
</head>
<?php
// some code, $row['topic_id'] and $row['msg_id'] are integers
while ($row = mysql_fetch_assoc($result)) {
// some code
echo '<div id="row-' . $row['msg_id'] . '">';
$deletelink = '<a href="#" data-row="' . $row['topic_id'] . '" data-msg="' . $row['msg_id'] . '" data-action="deletelink" class="deletelink">Delete</a>';
// some code
echo $deletelink;
echo '</div>';
}
?>
$('.deletelink')。单击(函数(e){
e、 预防默认值();
var topicid=$(this.attr('data-row')、msgid=$(this.attr('data-msg')、action=$(this.attr('data-action');
if(topicid==0){
var ans=确认(“删除主题?”);
}否则{
var ans=确认(“删除此评论?”);
}
如果(ans){
var dest='msg_transact.php';
$.post(dest,{topicid:topicid,msgid:msgid,action:action},function(){
$(“#行-”+msgid).hide(“slow”);
});
}
});
请参见与在
上生成的伪html相对应的示例,单击
需要“返回false
”以防止默认操作(在#锚定之后)
现在,您似乎正在使用jQuery。 也就是说,假设您使用的是html5,为什么不编写一个非侵入性代码呢 请注意,id不能仅是HTML中的数字
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$('.deletelink').click(function(e){
e.preventDefault();
var topicid = $(this).attr('data-row'), msgid = $(this).attr('data-msg'), action = $(this).attr('data-action');
if (topicid == 0) {
var ans = confirm("Delete the topic?");
} else {
var ans = confirm("Delete this comment?");
}
if (ans) {
var dest = 'msg_transact.php';
$.post(dest, {topicid:topicid, msgid:msgid, action:action}, function() {
$("#row-" + msgid).hide("slow");
});
}
});
</script>
</head>
<?php
// some code, $row['topic_id'] and $row['msg_id'] are integers
while ($row = mysql_fetch_assoc($result)) {
// some code
echo '<div id="row-' . $row['msg_id'] . '">';
$deletelink = '<a href="#" data-row="' . $row['topic_id'] . '" data-msg="' . $row['msg_id'] . '" data-action="deletelink" class="deletelink">Delete</a>';
// some code
echo $deletelink;
echo '</div>';
}
?>
$('.deletelink')。单击(函数(e){
e、 预防默认值();
var topicid=$(this.attr('data-row')、msgid=$(this.attr('data-msg')、action=$(this.attr('data-action');
if(topicid==0){
var ans=确认(“删除主题?”);
}否则{
var ans=确认(“删除此评论?”);
}
如果(ans){
var dest='msg_transact.php';
$.post(dest,{topicid:topicid,msgid:msgid,action:action},function(){
$(“#行-”+msgid).hide(“slow”);
});
}
});
请参见与在两个选项上生成的伪html相对应的示例:
将“#”
替换为“javascript:pipeDelete(..”
,并删除onclick属性或通过jquery添加click事件,这样可以防止默认行为
例如:
两种选择:
将“#”
替换为“javascript:pipeDelete(..”
,并删除onclick属性或通过jquery添加click事件,这样可以防止默认行为
例如:
问题在于:
$("#" + msgid + "\"").hide("slow");
改为:
$("#" + msgid).hide("slow");
$row['msg_id'] . '\', \'deletepost\')">Delete</a>';
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
在这里:
$row['msg_id'] . '\', \"deletepost\")">Delete</a>';
$row['msg\u id'.\'\“deletepost\”>删除“;
改为:
$("#" + msgid).hide("slow");
$row['msg_id'] . '\', \'deletepost\')">Delete</a>';
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$row['msg\u id'].\',\'deletepost\')>Delete';
在这里:
<script type="text/javascript" src="jquery.js">
改为:
$("#" + msgid).hide("slow");
$row['msg_id'] . '\', \'deletepost\')">Delete</a>';
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
见:
您不需要更改“#”
或返回false代码>-“#”
不会重新加载页面,它只会将页面移动到内部锚点所在的位置(如果您提供并指定了一个)。问题在于:
$("#" + msgid + "\"").hide("slow");
改为:
$("#" + msgid).hide("slow");
$row['msg_id'] . '\', \'deletepost\')">Delete</a>';
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
在这里:
$row['msg_id'] . '\', \"deletepost\")">Delete</a>';
$row['msg\u id'.\'\“deletepost\”>删除“;
改为:
$("#" + msgid).hide("slow");
$row['msg_id'] . '\', \'deletepost\')">Delete</a>';
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$row['msg\u id'].\',\'deletepost\')>Delete';
在这里:
<script type="text/javascript" src="jquery.js">
改为:
$("#" + msgid).hide("slow");
$row['msg_id'] . '\', \'deletepost\')">Delete</a>';
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
见:
您不需要更改“#”
或返回false代码>-“#”
不会重新加载页面,它只会将页面移动到内部锚点所在的位置(如果您提供并指定了一个)。我尝试了这个方法onclick=“pipeDelete();return false;”
但这也不起作用……锚不重新加载页面-不需要return false。如果我不编写return false
,页面URL在末尾附加了#,没有其他情况发生。在您的示例中,您编写了onclick=“return false;pipeDelete(…)
这显然是不对的。谢谢你!但是在你新编辑之前我已经解决了这个问题。问题只是我在/*代码、函数*/
中编写了JS代码,这是错误的。问题是通过分别编写两个脚本标记来解决的,一个用于jquery src,另一个用于代码,就像你在编辑中写的一样。:-)我尝试了这个方法.onclick=“pipeDelete();返回false;“
但这也不起作用…锚不重新加载页面-不需要return false。如果我不编写return false;
,页面URL将在末尾附加#,而不会发生任何其他情况。在您的示例中,您编写了onclick=“return false;pipeDelete(…)
这显然是不对的。谢谢你!但是我已经在你的新编辑之前解决了这个问题。问题只是我在/*代码、函数*/
中编写了JS代码,这是错误的。通过编写两个单独的脚本标记解决了这个问题,一个用于jquery src,另一个用于代码,就像您在编辑中所写的那样。:-)第二个方法,我应该在标签中的pipeDelete()中写入吗?如果是的话,所有的代码都会在//do stuff中?第一个方法,用#替换时,什么都不会发生,页面甚至不会重新加载。第二个方法,我应该在标签中的pipeDelete()中写入吗?如果是,所有的