简单jquery选择器脚本中出现意外行为

Unexpected behavior in simple jquery selector script

本文关键字:意外 jquery 选择器 脚本 简单      更新时间:2023-09-26

EDIT:如果有人因为某种原因需要这个脚本,我会制作一个更干净、完全可用的版本:https://jsfiddle.net/qmgob1d5/3/

我有一个jquery脚本,它应该以从到的方式突出显示元素。它也应该倒过来工作。这是工作小提琴:https://jsfiddle.net/qmgob1d5/

它运行良好,直到我选择零(第一个框(作为第二个元素。那么var Start = Math.min(ClickOne, ClickTwo || 16);似乎没有按预期工作。出了什么问题?

这是脚本:

var FirstClick;
var ClickOne;
var ClickTwo;
$('.ColorPreview').on('click',function() {
var ColorId = $(this).attr('id');
    ColorId = Number(ColorId.split('_')[1]);
    if (!FirstClick) {
        //reset function
        for (var i = 0; i < 16; i++) {
        $('#Color_' + i).removeClass('SelectColor'); }
        var ClickTwo;
        ClickOne = ColorId; 
        FirstClick = true; 
        }
    else {
        ClickTwo = ColorId;
        FirstClick = false; }   
console.log('ClickOne ' + ClickOne)
console.log('Clicktwo ' + ClickTwo)
var Start = Math.min(ClickOne, ClickTwo || 16);
var End = Math.max(ClickOne, ClickTwo || 0);
console.log('start ' + Start)
console.log('end ' + End)
    for (var i = Start; i <= End; i++) {
    $('#Color_' + i).addClass('SelectColor'); }
});

ClickTwo0时,表达式ClickTwo || 16将计算为16

尝试

var Start = Math.min(ClickOne, ClickTwo == null ? 16 : ClickTwo);

或者在函数开始时将ClickTwo初始化为16