Javascript 根据输入的数字是否大于、小于或等于动态生成if-else
我有以下格式的数据: HTML: 我正在尝试动态生成if-else,这样,如果用户输入26000,它应该通过相应地检测符号属性来给我Result=3 上面的结构是动态的,所以我不能使用静态的if-else条件 这是你的电话号码 请提供帮助。这可以通过使用以字符串形式执行JavaScript代码的函数来实现 请尝试从以下代码中理解:Javascript 根据输入的数字是否大于、小于或等于动态生成if-else,javascript,jquery,Javascript,Jquery,我有以下格式的数据: HTML: 我正在尝试动态生成if-else,这样,如果用户输入26000,它应该通过相应地检测符号属性来给我Result=3 上面的结构是动态的,所以我不能使用静态的if-else条件 这是你的电话号码 请提供帮助。这可以通过使用以字符串形式执行JavaScript代码的函数来实现 请尝试从以下代码中理解: var userval=26000; $(“.data table”).find(“*”).each(function(){ var val=$(this.attr
var userval=26000;
$(“.data table”).find(“*”).each(function(){
var val=$(this.attr(“val”);
var c=$(this.attr(“符号”);
var exec=`${userval}${c}${val}`;
console.log(exec);
console.log(eval(exec));
如果(评估(执行)){
$(this).text(userval);
}
});代码>
您编写的代码实际上并没有满足您的问题要求(@RiteshKhandekar的答案满足您的要求)。如果您假设括号按升序排列,那么代码可以工作,但它可能不是最好的。您的需求实际上似乎更接近于“查找排序数组中的最后一个元素,该数组小于某些动态选择的目标”
因为您说过您的结构是动态创建的,所以编写检查每种可能性的代码是行不通的。您需要构建能够处理任意数据的东西。您可以通过以下方式来实现:
//二进制搜索实现,因为数据已排序
最后一个函数(数组、目标)
{
让我们开始=0
设end=array.length-1;
设指数=-1;
而(开始=目标){
结束=中间-1;
}
否则{
指数=mid;
开始=中间+1;
}
}
回报指数
}
设divs=$(“.data table>div”)
让值=[]
//从HTML中的一组值生成一个数组
divs.each(函数(){
values.push(parseInt(this.getAttribute('val'))
})
//查找最后一个小于目标值的索引
让索引=最后一个(值26000)
//为索引==-1添加错误检查
//对索引做些什么
console.log(divs.get(index.getAttribute('result'))
所以。。。像operations={'=':(x,y)=>x>=y,…}
这样的东西可能会起作用<代码>如果(操作[符号](a,b))…
您至少应该自己尝试解决这个问题。如果你做不到,展示你的尝试,并解释你遇到的问题。有人会帮忙的。嘿,谢谢你的建议,我已经想出了一个解决办法。有没有更好的办法?唯一的问题是使用eval()
。见和。考虑将映射从“符号”添加到某种方法。
<div class="data-table">
<div class="data-table-item" sign="<" val="10000" result="1"></div>
<div class="data-table-item" sign=">=" val="10000" result="2"></div>
<div class="data-table-item" sign=">=" val="25000" result="3"></div>
<div class="data-table-item" sign=">=" val="50000" result="4"></div>
</div>
var user_Value = 26000;