Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 代码不';使用参数时无法按预期工作_Javascript_Jquery_Jquery Ui_Uislider - Fatal编程技术网

Javascript 代码不';使用参数时无法按预期工作

Javascript 代码不';使用参数时无法按预期工作,javascript,jquery,jquery-ui,uislider,Javascript,Jquery,Jquery Ui,Uislider,我用jqueryui实现了一个UISlider。我想在滑块下添加一个图例,显示数字。我遵循了演示如何实现这一点的步骤 现在我试着做以下几点:如果数字彼此太接近,它应该隐藏其他数字,如果数字仍然太接近,它应该隐藏每3个数字,依此类推 我最终实现了它,但当我尝试向checkvals()函数添加参数时,它不起作用 代码如下: 不工作:带参数 函数检查值(幻灯片ID){ var阈值=25; var$labels=$(sliderID+'.sliderLegendNum:visible'); var

我用
jqueryui
实现了一个UISlider。我想在滑块下添加一个图例,显示数字。我遵循了演示如何实现这一点的步骤

现在我试着做以下几点:如果数字彼此太接近,它应该隐藏其他数字,如果数字仍然太接近,它应该隐藏每3个数字,依此类推

我最终实现了它,但当我尝试向
checkvals()
函数添加参数时,它不起作用

代码如下:

不工作:带参数

函数检查值(幻灯片ID){
var阈值=25;
var$labels=$(sliderID+'.sliderLegendNum:visible');
var l=$labels.length;
var fst=$labels.eq(l-2).width();
var nxt=$labels.eq(l-1).width();
var first=$labels.eq(l-2).offset().left+fst;
var second=$labels.eq(l-1).offset().left;
var dist=(第二-第一)+(fst/2)+(nxt/2);
国际单项体育联合会(分区){
位置:绝对位置;
宽度:20px;
左边距:-10px;
文本对齐:居中;
边缘顶部:20px;
}
/*以下是没有必要的,只是为了风格*/
#滑块{
宽度:50%;
利润率:2米自动;
}

您可以这样修复代码:

function checkvals(selector) {

    var threshold = 25;

    var $labels = $(selector).find(".sliderLegendNum:visible");

    var l = $labels.length;
    var fst = $labels.eq(l - 2).width();
    var nxt = $labels.eq(l - 1).width();

    var first = $labels.eq(l - 2).offset().left + fst;
    var second = $labels.eq(l - 1).offset().left;

    var dist = (second - first) + (fst / 2) + (nxt / 2);

    if (dist <= threshold) {
        $labels = $(selector).find(".sliderLegendNum:visible");
        var c = 0;
        $labels.each(function () {
            if (c++ % 2) {
                $(this).hide();
            }
        });
        checkvals(selector);
    } else {
        return true;
    }
}

$("#slider").slider({
    value: 4,
    min: 1,
    max: 35,
    step: 1
})
    .each(function () {
    var opt = $(this).data().uiSlider.options;
    var vals = opt.max - opt.min;

    for (var i = 0; i <= vals; i++) {
        var el = $('<div class="sliderLegend"><div class="sliderLegendMark">|</div><div class="sliderLegendNum" id="legendNum' + i + '">' + (i + 2) + '</div></div>').css('left', (i / vals * 100) + '%');
        $('#slider').append(el);
    }

});
checkvals('#slider');
功能检查VAL(选择器){
var阈值=25;
var$labels=$(选择器).find(“.sliderLegendNum:visible”);
var l=$labels.length;
var fst=$labels.eq(l-2).width();
var nxt=$labels.eq(l-1).width();
var first=$labels.eq(l-2).offset().left+fst;
var second=$labels.eq(l-1).offset().left;
var dist=(第二-第一)+(fst/2)+(nxt/2);

如果(D.P.S.)优化代码性能,则应该考虑不要将DOM中的元素追加到for循环中。或者简单地将文本变量中的所有div合并到循环中,并在循环结束时将其附加到DOM中。我在if语句中从JSLint得到一条警告说,
“$labels”已经定义。
对不起,我的错,给我5分钟时间,我修复了它!没问题!另外,当我实例化
el
的变量时,我如何使它成为multi行?意思是,我希望每个
div
都有自己的行。你的意思是这样的吗?