html/javascript:按钮的ID正在更改(?)
在我的网页上,我有两个按钮,它们都会返回一个不同的“确认”弹出窗口,具体取决于按下的按钮 守则:html/javascript:按钮的ID正在更改(?),javascript,php,html,Javascript,Php,Html,在我的网页上,我有两个按钮,它们都会返回一个不同的“确认”弹出窗口,具体取决于按下的按钮 守则: <form action = "markascomplete.php" method = "post" onsubmit = "return validateForm();"> echo '<tr><td><button id = "btnComplete" style = "submit" class = "btn btn-success" name =
<form action = "markascomplete.php" method = "post" onsubmit = "return validateForm();">
echo '<tr><td><button id = "btnComplete" style = "submit" class = "btn btn-success" name = "btnComplete" value = "btnComplete">Voltooi deze taak</button></td></tr>';
echo '<tr><td><button id = "btnDeComplete" style = "submit" class = "btn btn-danger" name = "btnDeComplete" value = "btnDeComplete">Markeren als onvoltooid</button></td></tr>';
function validateForm()
{
var btnMark = document.getElementById( 'btnMark' );
var btnActive = document.getElementById( 'btnActive' );
var btnComplete = document.getElementById( 'btnComplete' );
var btnDeComplete = document.getElementById( 'btnDeComplete' );
alert( btnDeComplete.value );
var sConfirmText = "";
var sAlertText = "";
if( btnMark )
{
//alert( btnMark.value );
sConfirmText = "Test1";
sAlertText = "Test2";
}
else if( btnActive )
{
//alert( btnActive.value );
sConfirmText = "Test3";
sAlertText = "Test4";
}
else if( btnComplete )
{
alert( btnComplete.value );
alert( 'btncomplete' );
sConfirmText = "Test5";
sAlertText = "Test6";
}
else if( btnDeComplete )
{
alert( btnDeComplete.value );
alert( 'btndecomplete' );
sConfirmText = "Test7";
sAlertText = "Test8";
}
if( confirm( sConfirmText ) )
{
alert( sAlertText );
return true;
}
else
return false;
}
echo“Voltooi deze taak”;
回音“Markeren als on voltooid”;
函数validateForm()
{
var btnMark=document.getElementById('btnMark');
var btnActive=document.getElementById('btnActive');
var btnComplete=document.getElementById('btnComplete');
var btndeplete=document.getElementById('btndeplete');
警报(btndeplete.value);
var sConfirmText=“”;
var sAlertText=“”;
如果(BTN标记)
{
//警报(btnMark.value);
sConfirmText=“Test1”;
salertext=“Test2”;
}
else if(b活动)
{
//警报(btnActive.value);
sConfirmText=“Test3”;
salertext=“Test4”;
}
否则如果(BTN完成)
{
警报(btnComplete.value);
警报('btncomplete');
sConfirmText=“Test5”;
salertext=“Test6”;
}
否则如果(btnDeComplete)
{
警报(btndeplete.value);
警报('btndeplete');
sConfirmText=“Test7”;
salertext=“Test8”;
}
如果(确认(sConfirmText))
{
警报(sAlertText);
返回true;
}
其他的
返回false;
}
那么当你按下这些按钮时会发生什么,它会给你一个值为btndeplete的警报,显示两个带有“Test”的警报+被按下按钮的给定数量
现在,当您按下按钮btnComplete时,会收到以下警报:
B完成
B完成
测试5
测试6
按下按钮btnDeComplete时,您会收到以下警报:
B完成
B完成
测试5
测试6
请注意,它们都是相同的,并且是第一个“alert(btndeplete.value);”返回btnComplete而不是btnDeComplete。
我没有改变代码中任何地方的ID或值,我只是在创建按钮的地方设置ID、名称和值
所有其他按钮都可以正常工作
有人能帮我解决这个问题吗?因为您正在运行一系列if条件,它正在运行第一个匹配true的代码。它不执行前两个if条件中的代码,因为这些元素不存在,因此btnActive和btnComplete变量为null或false,因此if条件失败,这些元素的代码不执行 javascript的顶部只是使用getElement将这些元素(如果它们存在于文档中)分配给变量,而按下哪个按钮并没有什么区别,因为它们都调用相同的函数 在函数中,您可以使用this.id获取所按下按钮的id
希望这能有所帮助:)我将用一个一般场景来详细说明
<form action = "markascomplete.php" id="frmMarks" method = "post">
echo '<tr><td><button id = "btnComplete" style = "submit" class = "btn btn-success btnClick" name = "btnComplete" data-option="Success" value = "btnComplete">Voltooi deze taak</button></td></tr>';
echo '<tr><td><button id = "btnDeComplete" style = "submit" class = "btn btn-danger btnClick" name = "btnDeComplete" data-option="Delete" value = "btnDeComplete">Markeren als onvoltooid</button></td></tr>';
</form>
echo“Voltooi deze taak”;
回音“Markeren als on voltooid”;
编辑:
<script>
$('.btnClick').on('click',function(){
var sConfirmText = "";
var sAlertText = "";
var sDataOption = $(this).attr("data-option");
if( sDataOption == "btnMark" )
{
alert( 1 );
sConfirmText = "1";
sAlertText = "1";
}
else if( sDataOption == "btnActive" )
{
alert( 2 );
sConfirmText = "2";
sAlertText = "2";
}
else if( sDataOption == "btnComplete" )
{
alert( 3 );
sConfirmText = "3";
sAlertText = "3";
}
else
{
alert( 4 );
sConfirmText = "4";
sAlertText = "4";
}
if( confirm( sConfirmText ) )
{
alert( sAlertText );
$('#frmMarks').submit();
}
else
return false;
});
</script>
$('.btnClick')。在('click',function()上{
var sConfirmText=“”;
var sAlertText=“”;
var sDataOption=$(this.attr(“数据选项”);
如果(sDataOption==“btnMark”)
{
警报(1);
sConfirmText=“1”;
salertext=“1”;
}
else if(sDataOption==“btnActive”)
{
警报(2);
sConfirmText=“2”;
salertext=“2”;
}
否则如果(sDataOption==“BTN完成”)
{
警惕(3);
sConfirmText=“3”;
salertext=“3”;
}
其他的
{
警惕(4);
sConfirmText=“4”;
salertext=“4”;
}
如果(确认(sConfirmText))
{
警报(sAlertText);
$('frmMarks')。提交();
}
其他的
返回false;
});
编辑
根据我从你的粘贴箱链接中看到的,你又错过了一条
=
登录else if
语句,我想将你上一条else if
语句转换为我在编辑中显示的else
语句。检查一下这是否有效。还有一个建议,您可以使用开关
大小写,而不是if-else
,当您要进行多次检查时,它的性能会更好。如果我想使用这个.id,我需要将函数中的按钮指定为参数,对吗?因为我尝试使用this.id,但它返回“undefined”,只需在按钮中添加一个html5 data-*属性,单击后获取它,并根据它进行区分。@GuruprasadRao这样所有按钮都可以具有相同的id,我可以将data-*值更改为我需要的任何值,对吗?编辑:在PHP中可以调用data-*值吗?为不同的控件使用一个id是一个非常糟糕的主意,不建议这样做。因此,我要说的是为所有按钮保留一个类或添加一个更常见的类,然后单击该类获取data-*属性,并基于该属性进行操作。编辑:您是否以任何方式使用jQuery?如果是,我可以给你一个更好的答案。但我不知道你是怎么做到的php@GuruprasadRao是的,我也在使用jQuery,我会尝试按照你的建议去做,但也请发布jQuery解决方案。学习新事物总是好的:)当然。我将发布解决方案:)编辑:顺便说一下,我找不到表单的结束位置以及表单包含的其他控件。我将发布一个通用的解决方案,在点击特定的按钮时在模式上加载特定的文本。我已经尝试了这段代码,但我仍然遇到和以前一样的问题,除了现在它一直在调用“btnActive”。编辑:jQuery部分在块中,我不明白。。这里的btnActive在哪里??请给我一个完整的场景!!看看pastebin链接哇,我现在觉得很尴尬,因为我已经看到我做错了什么。这确实是问题所在,谢谢你的帮助!还有,有多少if语句是一个更适合使用的switch语句?这些小错误发生在每个程序员身上,很难识别:)我的感觉是,如果你有2或m