小编Sar*_*air的帖子

跨浏览器兼容的CustomEvent

我需要创建一个自定义事件,它将一些数据传递给事件监听器.我已经创建了一个如下所示

自定义事件

var event = new CustomEvent('store', { 'detail': obj });
document.getElementById("Widget").dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

倾听者

document.getElementById("Widget").addEventListener('store', function (e) {
  console.log(e.detail);
  document.getElementById("result").innerHTML = e.detail.name+"<br>"+e.detail.address;
}, false);
Run Code Online (Sandbox Code Playgroud)

它在Chrome和Firefox等浏览器中运行良好,但在IE11中无效.我收到错误 - trigger()在IE中.

var event = new CustomEvent('store', { 'detail': obj });
document.getElementById("Widget").dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

如何使这种跨浏览器兼容?我不想使用jQuery,Listener因为它trigger()可能不在具有jQuery的页面中

提前致谢.

javascript jquery events cross-browser jquery-events

7
推荐指数
2
解决办法
7549
查看次数

带省略号的分页算法

作为我日常工作的一部分,我的任务是在我的反应应用程序中实现分页。我完成了 UI 和状态管理,但陷入了分页算法。我参考了下面列出的许多标准算法

  1. https://gist.github.com/kottenator/9d936eb3e4e3c3e02598
  2. https://flaviusmatis.github.io/simplePagination.js

问题是我们的算法略有修改。我所做的是使用这里提到的算法 - https://gist.github.com/kottenator/9d936eb3e4e3c3e02598并实现了具有不同 UI 状态的基本分页组件。( If array[i] === selectedPageFromProps, then highlight that page with different colour)

该算法的作用是将 selectedPage 和totalNumberOfPages 作为参数,并返回带有省略号的所有页面的数组(如果有更多页面)

函数分页(selectedPage,totalPages){返回带有省略号的arrayOfPageNumbers(如果需要)}

该算法应根据设备返回不同的值 - 在移动设备中,我们最多显示 4 个数字,在桌面设备中,我们最多显示 7 个页面。

下面提到该算法的不同返回值。

In Mobile - Max number of pages to be displayed is 4
*****************************************************

pagination(1,4) : 1,2,3,4
pagination(2,4) : 1,2,3,4
pagination(3,4) : 1,2,3,4
pagination(4,4) : 1,2,3,4

If totalPages > 4

pagination(1,99) : 1,2,3,...,99
pagination(2,99) : 1,2,3,...,99
pagination(3,99) : 1,...,3,...,99
pagination(4,99) : 1,...,4,...,99
pagination(5,99) : 1,...,5,...,99 …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm pagination reactjs

4
推荐指数
1
解决办法
7703
查看次数

如何按升序对 JavaScript 中的嵌套数组进行排序?

我有一个这样的嵌套数组var input = [2, 4, 2, 6, 1, [4, 2, 1], [0, 2, 1, 6, [2, 1], [1]], [1], 5];,输出应该以这样的方式排序,所有数字都应该按升序排在最前面,如果数组包含子数组,它应该按其长度的顺序出现。也就是说,长度为 1 的子数组应该在前,长度为 2 的子数组应该在第二位等等。此外,如果其中有数字,则应该升序排列。

var output = [1, 2, 2, 4, 5, 6, [1], [1, 2, 4], [0, 1, 2, 6, [1], [1, 2]]];

下面是我的实现,但它只排序了一层。如何递归调用它?

function sortArray(arr) {
  return [...arr]
    .sort((a, b) => {
      if (Array.isArray(a) && Array.isArray(b)) return a.length - b.length;
      else if (Array.isArray(a) || Array.isArray(b)) return 1;
      else return a - b;
    });
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting

3
推荐指数
1
解决办法
150
查看次数

Angular Material 带有自定义 panelClass 配置的 Snackbar 配置,用于错误、成功、警告消息

我在我的角度应用程序中创建了一个全局的snackBarService。我想panelClass根据消息类型(错误、成功、警告等)进行自定义。我采取的方法是在构造函数中进行全局配置,这有助于定义小吃栏的全局样式/配置,并添加自定义类以根据消息类型更改背景颜色。

SnackBarService.ts

import { Injectable, NgZone } from "@angular/core";
import { MatSnackBar, MatSnackBarConfig } from "@angular/material";

@Injectable({
  providedIn: "root",
})
export class SnackbarService {
  private config: MatSnackBarConfig;

  constructor(private snackbar: MatSnackBar, private zone: NgZone) {
    this.config = new MatSnackBarConfig();
    this.config.panelClass = ["snackbar-container"];
    this.config.verticalPosition = "top";
    this.config.horizontalPosition = "right";
    this.config.duration = 4000;
  }

  error(message: string) {
    this.config.panelClass = ["snackbar-container", "error"];
    this.show(message);
  }

  success(message: string) {
    this.config.panelClass = ["snackbar-container", "success"];
    this.show(message);
  }

  warning(message: string) {
    this.config.panelClass = ["snackbar-container", "warning"];
    this.show(message);
  } …
Run Code Online (Sandbox Code Playgroud)

javascript angular-material snackbar angular

3
推荐指数
1
解决办法
5018
查看次数

如何将HashMap.getKey()转换为Int

我有一个存储出勤信息的HashMap.我只想将Key转换为Int并检查条件.

以下是我的代码:

import java.util.*;

public class HashClass {

    public static void main(String args[]) {

        HashMap<Integer, String> attendanceHashMap = new HashMap<Integer, String>();
        attendanceHashMap.put(1, "John");
        attendanceHashMap.put(2, "Jacob");
        attendanceHashMap.put(3, "Peter");
        attendanceHashMap.put(4, "Clara");
        attendanceHashMap.put(5, "Philip");

        for(HashMap.Entry m:attendanceHashMap.entrySet()){
            if(Integer.valueOf((int)m.getKey())<3) break;
            System.out.println(m.getKey()+" "+m.getValue());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想像这样打印

3 Peter
4 Clara
5 Philip
Run Code Online (Sandbox Code Playgroud)

我试过这些方法:

 - (int)m.getKey() : not working
 - Integer.valueOf((int)m.getKey()) : not working
 - Integer.valueOf(m.getKey()) : not working
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

java foreach hashmap

2
推荐指数
1
解决办法
8588
查看次数

是否可以在一个包中创建多个类并将它们导入到另一个包中?

您好,我有一个关于 Java 包的问题。我创建了一个包含多个类的包[包名称是“animal”,文件名是“Zoo.java”]。我创建了另一个 java 文件,该文件位于另一个包“mypackage”中,并创建了一个名为“MAIN.java”的文件。我尝试从“MAIN.java”访问“animal”包的成员,但它向我抛出一个错误,因为它无法访问“animal”包的类。我知道只有同一包中的类才可以相互访问,或者应该公开。但我只能在“Zoo.java”中将一个类更改为公共类。所以我找到了一种解决方案,为动物包中的每个类创建单独的java文件并将其公开。还有其他方法吗?我的理解是,我们可以将所有类编写在一个文件中并从任何地方导入它们。下面是我的截图。 在此输入图像描述

还有一件事,在java库中它们是如何实现的?包中每个类的单独源文件?

java import class package

1
推荐指数
1
解决办法
6111
查看次数