第一个参数可以是字符串,也可以是obj数组
时间: 2023-08-10 19:16:09 浏览: 40
好的,这里是一个可以接受字符串或对象作为参数的弹窗方法:
```typescript
interface PopupOptions {
title: string;
content: string;
method: string | (() => void);
}
function popup(options: PopupOptions | string, content?: string, method?: string | (() => void)): void {
let title = '';
let popupContent = '';
let popupMethod: string | (() => void) = '';
if (typeof options === 'string') {
title = options;
popupContent = content || '';
popupMethod = method || '';
} else {
title = options.title;
popupContent = options.content;
popupMethod = options.method;
}
const confirmMethod = typeof popupMethod === 'string' ? window[popupMethod] : popupMethod;
// 创建弹窗 DOM
const popupContainer = document.createElement('div');
popupContainer.classList.add('popup-container');
const popupTitle = document.createElement('h2');
popupTitle.textContent = title;
const contentElement = document.createElement('p');
contentElement.textContent = popupContent;
const confirmButton = document.createElement('button');
confirmButton.textContent = '确认';
confirmButton.addEventListener('click', () => {
confirmMethod();
popupContainer.remove();
});
const cancelButton = document.createElement('button');
cancelButton.textContent = '取消';
cancelButton.addEventListener('click', () => {
popupContainer.remove();
});
const buttonContainer = document.createElement('div');
buttonContainer.classList.add('button-container');
buttonContainer.appendChild(cancelButton);
buttonContainer.appendChild(confirmButton);
popupContainer.appendChild(popupTitle);
popupContainer.appendChild(contentElement);
popupContainer.appendChild(buttonContainer);
document.body.appendChild(popupContainer);
}
```
这个弹窗方法可以接受两种形式的参数:
- 一个字符串作为标题,另外两个字符串分别作为内容和方法名:
```typescript
popup('提示', '确定要删除吗?', 'deleteItem');
```
- 一个包含 `title`、`content` 和 `method` 属性的对象:
```typescript
popup({
title: '提示',
content: '确定要删除吗?',
method: 'deleteItem'
});
```
希望这可以满足您的需求。如果还有任何问题,请随时让我知道。