GVKun编程网logo

javascript – 如何使用默认值true轻松地将变量设置为false?(js方法默认值)

22

本文将分享javascript–如何使用默认值true轻松地将变量设置为false?的详细内容,并且还将对js方法默认值进行详尽解释,此外,我们还将为大家带来关于java–如何使用setSelecti

本文将分享javascript – 如何使用默认值true轻松地将变量设置为false?的详细内容,并且还将对js方法默认值进行详尽解释,此外,我们还将为大家带来关于java – 如何使用setSelection在swt表上设置选择并将reveal设置为false?、JavaScript – bfcache / pageshow事件 – event.persisted总是设置为false?、javascript – D3.json将缓存设置为false、javascript – jQuery UI Slider – 在函数中使用默认值的相关知识,希望对你有所帮助。

本文目录一览:

javascript – 如何使用默认值true轻松地将变量设置为false?(js方法默认值)

javascript – 如何使用默认值true轻松地将变量设置为false?(js方法默认值)

我通常设置这样的对象属性,
// Boolean
this.listening = config.listening || true;

但是config.listening是true或false,在这种情况下this.listening将始终为true,因为如果config.listening为false,则它将等于true.

有没有更好的方法来设置这些布尔属性而不必执行if语句?

在javascript中是否存在if is@R_629_5301@来检查它是否存在而不是它等于什么?

解决方法

您可以像这样使用三元(条件)运算符:
this.listening = config.listening === false ? false : true;

如果config.listening为false,则this.listening设置为false.如果它是任何其他值,则将其设置为true.

如果要检查是否已定义,可以使用:

this.listening = typeof config.listening !== "undefined"

参考文献:

> https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator

java – 如何使用setSelection在swt表上设置选择并将reveal设置为false?

java – 如何使用setSelection在swt表上设置选择并将reveal设置为false?

我正在尝试在我的桌子中选择一些项目,但我不希望它们被揭示.
问题是调用方法(如下所示)会自动导致在Table.class中调用showSelected(),这不是我想要的.

tableViewer.getTable().setSelection(lastSelectedindices);

我已经尝试使用tableViewer设置选择,但由于某种原因它不起作用
例如:tableViewer.setSelection(new StructuredSelection(lastSelectedindices),false);
这行代码不会导致任何选择.

无论如何我可以选择表格行而不是让它们被揭示?
在我的系统中,每次网格刷新后我都需要调用setSelection,这样用户就不会丢失他选择的项目.当用户向下滚动网格时出现问题 – >如果在该点发生刷新,则网格会跳回到所选项目所在的位置.当用户向下滚动一个表并突然滚动条跳到顶部时,它看起来很奇怪.

任何帮助是极大的赞赏!

– 用于设置表格的代码 –

// add table viewer
    tableViewer = new TableViewer(this,SWT.MULTI | SWT.FULL_SELECTION | SWT.VIRTUAL);
    tableViewer.setUseHashlookup(true);
    tableViewer.addFilter(new GridPanelViewerFilter());
    tableViewer.setComparator(new GridPanelViewerComparator());
    tableViewer.setComparer(new GridPanelElementComparer());

    table = tableViewer.getTable();
    GridData tableGd = new GridData(SWT.FILL,SWT.FILL,true,true);
    table.setLayoutData(tableGd);
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    // set table font
    setTableFont();

    // listen to paint events for anti aliasing 
    table.addPaintListener( ...etcetc

—刷新表的代码 –

protected void refreshGrid() {
    if(!updateGrid) return;
    display.getDefault().asyncExec(new Runnable() {

        @Override
        public void run() {
            try {
                // check if disposed
                if (isdisposed()) {
                    log.log(new Status(IStatus.ERROR,Activator.PLUGIN_ID,getClass().getName() + ": " + "Grid already disposed"));
                    return;
                }
                // refresh table
                table.setRedraw(false);
                try {                   
                    // get last selected indices from mouse down event
                    tableViewer.refresh(true,false);
                    if(lastSelectedindices != null){
                        tableViewer.getTable().deselectAll();
                        tableViewer.getTable().select(lastSelectedindices);
                    }

                } catch (Exception e) {
                    log.log(new Status(IStatus.ERROR,getClass().getName() + ": " + "Error at refresh table",e));
                }
                table.setRedraw(true);
                // process post grid refresh
                postGridRefresh();

            } catch (Exception e) {
                log.log(new Status(IStatus.ERROR,getClass().getName() + ": " + "Error during refresh grid",e));
            }
        }
    });
}

解决方法

尝试使用Table.select(索引)来防止泄露.

但是使用TableViewer.refresh()实际上应该保留选择.只是一个疯狂的猜测,但也许你在TableViewer上设置任何输入之前尝试TableViewer.setUseHashlookup(true).

你使用VIRTUAL表吗?如果是这样,请先尝试不使用VIRTUAL标志.

JavaScript – bfcache / pageshow事件 – event.persisted总是设置为false?

JavaScript – bfcache / pageshow事件 – event.persisted总是设置为false?

在标准的 Java / SpringMVC / JSP / jQuery web-app中,我试图检测“Back”(或history.go(-1))事件,以便刷新(AJAX)摘要组件/面板内容时我返回到一个页面(我们可以在其中更改摘要组件显示的后端数据).

我在JavaScript中尝试了以下内容(关于StackExchange上的一些帖子,重新如何实现这一点):

<script type="text/javascript">
$(document).ready(function() {
    window.onpageshow = function(event) {
        console.log("Event:");
        console.dir(event);
        if (event.persisted) {
            alert("non-jQuery - back to page - loaded from bfcache");
        } else {
            alert("non-jQuery - loaded page from server");
        }
    };
    $(window).on("pageshow",function(event){
        console.log("Event:");
        console.dir(event);
        if (event.originalEvent.persisted) {
            alert("jquery - back to page - loaded from bfcache");
        } else {
            alert("jquery - loaded page from server");
        }
    });
});
</script>

我正在运行OpenSUSE Linux并尝试使用FireFox和Chrome(最新版本),但每次将事件的持久属性设置为false(我可以在JavaScript控制台中看到这一点,以及从上面的代码弹出的警报).每次,我的意思是,无论是从服务器加载还是通过后退按钮(或“后退”链接)再次显示.

我的目的是进行AJAX调用,如果页面通过Back按钮或history.go(-1)调用显示,则使用服务器的更新数据重新加载摘要组件/面板.

我还尝试设置一个卸载处理程序(什么都不做)以防止页面被放入bfcache但它似乎仍然显示一个bf-cached版本并且event.persisted(或event.originalEvent.persisted)设置为假.

这个属性在Linux上是否正确管理?我在代码中做了些什么蠢事吗?任何帮助或想法将不胜感激,谢谢!

解决方法

这似乎是 bug in Chrome(也是 present in IE11).

我找到了以下解决方法:

<input type="hidden" id="cacheTest"></input>
<script>
  var input = document.querySelector('#cacheTest')

  if (input.value === "") {
    // the page has been loaded from the server,// equivalent of persisted == false
  }
  else {
    // the page has been loaded from the cache,// equivalent of persisted == true
  }

  // change the input value so that we can detect
  // if the page is reloaded from cache later
  input.value = "some value"
</script>

这利用了这样的事实:在大多数浏览器中,当从缓存加载页面时,表单字段值也是守恒的.

javascript – D3.json将缓存设置为false

javascript – D3.json将缓存设置为false

我注意到用json调用(d3.json)重绘D3元素不希望在IE9上更新.原因是json调用被缓存,因此浏览器不会在新数据传递时注册.正常jQuery ajax调用的解决方法是将其属性设置为cache:false,全局用于所有ajax调用:
$.ajaxSetup({ cache: false });

但是如何将它添加到d3.json调用中,因为它使用自己的方法来调用ajax?我成功地在路径后面添加了当前时间戳:

var noCache = new Date().getTime();
d3.json(data + "?_=" + noCache)

但这样做有点蹩脚……任何建议我怎么能做到这一点?或者更好的是,如果IE正在运行,如何设置这个:)

解决方法

我遇到过同样的问题.
我通过将此代码添加到html文档的HEAD中来解决它.
<Meta http-equiv="cache-control" content="no-cache"> 
<Meta http-equiv="expires" content="0"> 
<Meta http-equiv="pragma" content="no-cache">

但是,这将阻止某个页面中每个对象的缓存,因此请小心使用图像,字体等.

javascript – jQuery UI Slider – 在函数中使用默认值

javascript – jQuery UI Slider – 在函数中使用默认值

我需要一些关于jQuery UI滑块的帮助,我已经设置了初始值,但我似乎找不到在页面加载时显示它的方法.我还需要能够将两个滑块值调用到一个函数来进行计算,然后将其显示到屏幕上.

你可以在这里查看我的小提琴测试> http://jsfiddle.net/cC3Qh/

jQuery的

$(function() {
    $( "#slider1").slider({ 
        max: 2500,
        value: 1000,
        slide: function( event, ui ) { $( "#slider-result1" ).html( ui.value ); },
        change: function(event, ui) { calPrice(ui.value); }
    });

    $( "#slider2").slider({ 
        max: 30,
        value: 12,
        slide: function( event, ui ) { $( "#slider-result2" ).html( ui.value ); },
        change: function(event, ui) { calDays(ui.value); }
    });
  });

  function calDays(sliderval){
    var day = sliderval;
    day = day * 100;
    document.getElementById('price2').innerHTML = day;
    var price = document.getElementById('price1').innerHTML;
    price = price * day;
    document.getElementById('price3').innerHTML = price;
  }

  function calPrice(sliderval){
    var price = sliderval;
    price = price * 100;
    document.getElementById('price1').innerHTML = price;
  }

谢谢.

解决方法:

向滑块添加create事件处理程序:

$("#slider1").slider({
    max: 2500,
    value: 1000,
    slide: function (event, ui) {
        $("#slider-result1").html(ui.value);
    },
    change: function (event, ui) {
        calPrice(ui.value);
    },
    create: function (event, ui) {
        $("#slider-result1").html($(this).slider("value"));
    }
});

今天的关于javascript – 如何使用默认值true轻松地将变量设置为false?js方法默认值的分享已经结束,谢谢您的关注,如果想了解更多关于java – 如何使用setSelection在swt表上设置选择并将reveal设置为false?、JavaScript – bfcache / pageshow事件 – event.persisted总是设置为false?、javascript – D3.json将缓存设置为false、javascript – jQuery UI Slider – 在函数中使用默认值的相关知识,请在本站进行查询。

本文标签: