Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在onclick中使用if-else语句吗?_Javascript - Fatal编程技术网

Javascript 我可以在onclick中使用if-else语句吗?

Javascript 我可以在onclick中使用if-else语句吗?,javascript,Javascript,我想按字符串属性值对对象数组进行排序。 因此,如果我单击一个按钮,值将被排序。 但只有第一个if语句有效。如果我将else-if语句更改为第一个if语句,它会工作,但无论我做什么,只有第一个if语句工作。 要使这三个按钮都工作,我应该做什么更改 var成员=[{ 名称:“jar”, 加入:“2017-2”, 性别:“f”, 年龄:“29” }, { 名称:“hrk”, 加入:“2017-8”, 性别:“f”, 年龄:“21” }, { 名称:“jjk”, 加入:“2014-6年”, 性别:“m

我想按字符串属性值对对象数组进行排序。 因此,如果我单击一个按钮,值将被排序。 但只有第一个if语句有效。如果我将else-if语句更改为第一个if语句,它会工作,但无论我做什么,只有第一个if语句工作。 要使这三个按钮都工作,我应该做什么更改

var成员=[{
名称:“jar”,
加入:“2017-2”,
性别:“f”,
年龄:“29”
}, {
名称:“hrk”,
加入:“2017-8”,
性别:“f”,
年龄:“21”
}, {
名称:“jjk”,
加入:“2014-6年”,
性别:“m”,
年龄:“27”
}, {
名称:“jsh”,
加入:“2016-5”,
性别:“m”,
年龄:“37”
}, {
名称:“kks”,
加入:“2014-4”,
性别:“f”,
年龄:“42”
}];
var list=“”;
函数func(){
对于(var i=0;i=val | |成员[i]。姓名==val | |成员[i]。性别==val | |成员[i]。年龄==val){
对于(var密钥输入成员[i]){
if(key==“name”| | key==“join”| | key==“sex”){
if(document.getElementById(“namebtn”).onclick){
var namesort=函数(a,b){
如果(a.name>b.name){
返回1;
}else if(a.nameb.加入){
返回1;
}else if(a.joinb.年龄){
返回1;
}否则如果(a.年龄”;
}
列表+=成员[i][key]+br;
}
}
}
document.getElementById(“title”).innerHTML=title;
document.getElementById(“who”).innerHTML=list;
返回false;
}



而不是检查
document.getElementById(“elementid”)。单击
,可以找到当前单击事件的目标。看看这个例子

var成员=[{name:“jar”,join:“2017-2”,sex:“f”,age:“29”},
{姓名:“hrk”,加入:“2017-8”,性别:“f”,年龄:“21”},
{姓名:“jjk”,加入:“2014-6”,性别:“m”,年龄:“27”},
{姓名:“jsh”,加入:“2016-5”,性别:“m”,年龄:“37”},
{姓名:“kks”,加入:“2014-4”,性别:“f”,年龄:“42”};
var list=“”;
函数func(e){
对于(var i=0;i=val | |成员[i]。姓名==val | |成员[i]。性别==val | |成员[i]。年龄==val){
对于(var密钥输入成员[i]){
if(key==“name”| | key==“join”| | key==“sex”){
如果(e.currentTarget.id==“namebtn”){
var namesort=函数(a,b){
如果(a.name>b.name){
返回1;
}else if(a.name(新日期(b.join)).getTime()){
返回1;
}else if((新日期(a.join)).getTime()<(新日期(b.join)).getTime()){
返回-1;
}
返回0;
}
成员排序(joinsort);
}否则如果(e.currentTarget.id==“agebtn”){
var agesort=函数(a,b){
if(parseInt(a.age)>parseInt(b.age)){
返回1;
}else if(parseInt(a.age)”;
}
列表+=成员[i][key]+br;
}
}
}
document.getElementById(“title”).innerHTML=title;
document.getElementById(“who”).innerHTML=list;
返回false;
}


如果(document.getElementById('namebtn').onclick)
将始终为true,因为该属性为truthy

您是否正在尝试检查单击了哪个按钮?如果是这种情况,您的func可能应该有一个
id
event
参数(
function func(btnId或e){…}
),然后将
this.id
传递给
func

但只有第一个if语句有效。如果我换了,否则如果 语句转换为第一个if语句

因为
onclick
值不是false
else
不太可能执行

要使这三个按钮都工作,我应该做什么更改

您可以通过传递进行排序的属性来简化,这里有一个相同的演示

var m