20250819corp
This commit is contained in:
+182
-65
@@ -5,9 +5,14 @@
|
||||
* @param {string} modalId - 模态框的ID
|
||||
*/
|
||||
function showModal(modalId) {
|
||||
const modal = document.getElementById(modalId);
|
||||
var modal = document.getElementById(modalId);
|
||||
if (modal) {
|
||||
modal.classList.remove('hidden');
|
||||
// 使用className替代classList以提高兼容性
|
||||
if (modal.classList) {
|
||||
modal.classList.remove('hidden');
|
||||
} else {
|
||||
modal.className = modal.className.replace('hidden', '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +21,14 @@ function showModal(modalId) {
|
||||
* @param {string} modalId - 模态框的ID
|
||||
*/
|
||||
function closeModal(modalId) {
|
||||
const modal = document.getElementById(modalId);
|
||||
var modal = document.getElementById(modalId);
|
||||
if (modal) {
|
||||
modal.classList.add('hidden');
|
||||
// 使用className替代classList以提高兼容性
|
||||
if (modal.classList) {
|
||||
modal.classList.add('hidden');
|
||||
} else {
|
||||
modal.className += ' hidden';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +37,7 @@ function closeModal(modalId) {
|
||||
* @param {string} modalId - 模态框的ID
|
||||
*/
|
||||
function bindModalOutsideClick(modalId) {
|
||||
const modal = document.getElementById(modalId);
|
||||
var modal = document.getElementById(modalId);
|
||||
if (modal) {
|
||||
modal.addEventListener('click', function(e) {
|
||||
if (e.target === this) {
|
||||
@@ -43,29 +53,69 @@ function bindModalOutsideClick(modalId) {
|
||||
* @param {boolean} isSuccess - 是否为成功消息
|
||||
* @param {number} duration - 消息显示时长(毫秒)
|
||||
*/
|
||||
function showMessage(message, isSuccess = true, duration = 5000) {
|
||||
const messageContainer = document.getElementById('messageContainer');
|
||||
const successMessage = document.getElementById('successMessage');
|
||||
const errorMessage = document.getElementById('errorMessage');
|
||||
function showMessage(message, isSuccess, duration) {
|
||||
// 为参数设置默认值,不使用ES6默认参数
|
||||
isSuccess = (isSuccess === undefined) ? true : isSuccess;
|
||||
duration = (duration === undefined) ? 5000 : duration;
|
||||
|
||||
var messageContainer = document.getElementById('messageContainer');
|
||||
var successMessage = document.getElementById('successMessage');
|
||||
var errorMessage = document.getElementById('errorMessage');
|
||||
|
||||
if (!messageContainer || !successMessage || !errorMessage) return;
|
||||
|
||||
if (isSuccess) {
|
||||
successMessage.querySelector('span').textContent = message;
|
||||
successMessage.classList.remove('hidden');
|
||||
errorMessage.classList.add('hidden');
|
||||
if (successMessage.classList) {
|
||||
successMessage.classList.remove('hidden');
|
||||
} else {
|
||||
successMessage.className = successMessage.className.replace('hidden', '');
|
||||
}
|
||||
if (errorMessage.classList) {
|
||||
errorMessage.classList.add('hidden');
|
||||
} else {
|
||||
errorMessage.className += ' hidden';
|
||||
}
|
||||
} else {
|
||||
errorMessage.querySelector('span').textContent = message;
|
||||
errorMessage.classList.remove('hidden');
|
||||
successMessage.classList.add('hidden');
|
||||
if (errorMessage.classList) {
|
||||
errorMessage.classList.remove('hidden');
|
||||
} else {
|
||||
errorMessage.className = errorMessage.className.replace('hidden', '');
|
||||
}
|
||||
if (successMessage.classList) {
|
||||
successMessage.classList.add('hidden');
|
||||
} else {
|
||||
successMessage.className += ' hidden';
|
||||
}
|
||||
}
|
||||
|
||||
messageContainer.classList.remove('hidden');
|
||||
if (messageContainer.classList) {
|
||||
messageContainer.classList.remove('hidden');
|
||||
} else {
|
||||
messageContainer.className = messageContainer.className.replace('hidden', '');
|
||||
}
|
||||
|
||||
// 自动隐藏
|
||||
setTimeout(() => {
|
||||
(isSuccess ? successMessage : errorMessage).classList.add('hidden');
|
||||
messageContainer.classList.add('hidden');
|
||||
setTimeout(function() {
|
||||
if (isSuccess) {
|
||||
if (successMessage.classList) {
|
||||
successMessage.classList.add('hidden');
|
||||
} else {
|
||||
successMessage.className += ' hidden';
|
||||
}
|
||||
} else {
|
||||
if (errorMessage.classList) {
|
||||
errorMessage.classList.add('hidden');
|
||||
} else {
|
||||
errorMessage.className += ' hidden';
|
||||
}
|
||||
}
|
||||
if (messageContainer.classList) {
|
||||
messageContainer.classList.add('hidden');
|
||||
} else {
|
||||
messageContainer.className += ' hidden';
|
||||
}
|
||||
}, duration);
|
||||
}
|
||||
|
||||
@@ -76,22 +126,32 @@ function showMessage(message, isSuccess = true, duration = 5000) {
|
||||
* @param {string} message - 错误消息内容
|
||||
* @param {string} successId - 成功消息容器的ID
|
||||
*/
|
||||
function showFormError(errorId, messageId, message, successId = '') {
|
||||
const errorContainer = document.getElementById(errorId);
|
||||
const errorMessage = document.getElementById(messageId);
|
||||
const successContainer = successId ? document.getElementById(successId) : null;
|
||||
function showFormError(errorId, messageId, message, successId) {
|
||||
successId = successId || '';
|
||||
|
||||
var errorContainer = document.getElementById(errorId);
|
||||
var errorMessage = document.getElementById(messageId);
|
||||
var successContainer = successId ? document.getElementById(successId) : null;
|
||||
|
||||
if (!errorContainer || !errorMessage) return;
|
||||
|
||||
errorMessage.textContent = message;
|
||||
errorContainer.classList.remove('hidden');
|
||||
|
||||
if (successContainer) {
|
||||
successContainer.classList.add('hidden');
|
||||
if (errorContainer.classList) {
|
||||
errorContainer.classList.remove('hidden');
|
||||
} else {
|
||||
errorContainer.className = errorContainer.className.replace('hidden', '');
|
||||
}
|
||||
|
||||
// 滚动到错误信息
|
||||
errorContainer.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||
if (successContainer) {
|
||||
if (successContainer.classList) {
|
||||
successContainer.classList.add('hidden');
|
||||
} else {
|
||||
successContainer.className += ' hidden';
|
||||
}
|
||||
}
|
||||
|
||||
// 滚动到错误信息,使用简单滚动方式替代smooth behavior
|
||||
errorContainer.scrollIntoView(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,41 +161,71 @@ function showFormError(errorId, messageId, message, successId = '') {
|
||||
* @param {string} message - 成功消息内容
|
||||
* @param {string} errorId - 错误消息容器的ID
|
||||
*/
|
||||
function showFormSuccess(successId, messageId, message, errorId = '') {
|
||||
const successContainer = document.getElementById(successId);
|
||||
const successMessage = document.getElementById(messageId);
|
||||
const errorContainer = errorId ? document.getElementById(errorId) : null;
|
||||
function showFormSuccess(successId, messageId, message, errorId) {
|
||||
errorId = errorId || '';
|
||||
|
||||
var successContainer = document.getElementById(successId);
|
||||
var successMessage = document.getElementById(messageId);
|
||||
var errorContainer = errorId ? document.getElementById(errorId) : null;
|
||||
|
||||
if (!successContainer || !successMessage) return;
|
||||
|
||||
successMessage.textContent = message;
|
||||
successContainer.classList.remove('hidden');
|
||||
|
||||
if (errorContainer) {
|
||||
errorContainer.classList.add('hidden');
|
||||
if (successContainer.classList) {
|
||||
successContainer.classList.remove('hidden');
|
||||
} else {
|
||||
successContainer.className = successContainer.className.replace('hidden', '');
|
||||
}
|
||||
|
||||
// 滚动到成功信息
|
||||
successContainer.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||
if (errorContainer) {
|
||||
if (errorContainer.classList) {
|
||||
errorContainer.classList.add('hidden');
|
||||
} else {
|
||||
errorContainer.className += ' hidden';
|
||||
}
|
||||
}
|
||||
|
||||
// 滚动到成功信息,使用简单滚动方式替代smooth behavior
|
||||
successContainer.scrollIntoView(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发起API请求的通用函数
|
||||
* 发起API请求的通用函数 - 使用Promise替代async/await以提高兼容性
|
||||
* @param {string} url - 请求URL
|
||||
* @param {string} method - 请求方法
|
||||
* @param {object} data - 请求数据
|
||||
* @param {object} options - 附加选项
|
||||
* @returns {Promise} - 返回Promise对象
|
||||
*/
|
||||
async function apiRequest(url, method = 'GET', data = null, options = {}) {
|
||||
const defaultOptions = {
|
||||
function apiRequest(url, method, data, options) {
|
||||
// 为参数设置默认值,不使用ES6默认参数
|
||||
method = method || 'GET';
|
||||
data = data || null;
|
||||
options = options || {};
|
||||
|
||||
// 手动合并选项,不使用扩展运算符
|
||||
var defaultOptions = {
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
method,
|
||||
...options
|
||||
method: method
|
||||
};
|
||||
|
||||
// 手动合并options
|
||||
for (var key in options) {
|
||||
if (options.hasOwnProperty(key)) {
|
||||
if (key === 'headers' && options.headers) {
|
||||
for (var headerKey in options.headers) {
|
||||
if (options.headers.hasOwnProperty(headerKey)) {
|
||||
defaultOptions.headers[headerKey] = options.headers[headerKey];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
defaultOptions[key] = options[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (data) {
|
||||
// 根据Content-Type处理数据
|
||||
if (defaultOptions.headers['Content-Type'] === 'application/json') {
|
||||
@@ -145,13 +235,23 @@ async function apiRequest(url, method = 'GET', data = null, options = {}) {
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(url, defaultOptions);
|
||||
return await response.json();
|
||||
} catch (error) {
|
||||
console.error(`API请求错误 [${url}]:`, error);
|
||||
throw error;
|
||||
}
|
||||
// 使用Promise替代async/await
|
||||
return new Promise(function(resolve, reject) {
|
||||
fetch(url, defaultOptions)
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
throw new Error('网络错误');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(function(data) {
|
||||
resolve(data);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.error('API请求错误 [' + url + ']:', error);
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -159,7 +259,7 @@ async function apiRequest(url, method = 'GET', data = null, options = {}) {
|
||||
* @param {string} formId - 表单ID
|
||||
*/
|
||||
function resetForm(formId) {
|
||||
const form = document.getElementById(formId);
|
||||
var form = document.getElementById(formId);
|
||||
if (form) {
|
||||
form.reset();
|
||||
}
|
||||
@@ -171,44 +271,61 @@ function resetForm(formId) {
|
||||
* @param {object} data - 表单数据对象
|
||||
*/
|
||||
function fillForm(formId, data) {
|
||||
const form = document.getElementById(formId);
|
||||
var form = document.getElementById(formId);
|
||||
if (!form || !data) return;
|
||||
|
||||
Object.keys(data).forEach(key => {
|
||||
const element = form.elements[key] || document.getElementById(key);
|
||||
if (element) {
|
||||
element.value = data[key] || '';
|
||||
// 使用传统的for-in循环替代forEach
|
||||
for (var key in data) {
|
||||
if (data.hasOwnProperty(key)) {
|
||||
var element = form.elements[key] || document.getElementById(key);
|
||||
if (element) {
|
||||
element.value = data[key] || '';
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 防抖函数
|
||||
* 防抖函数 - 使用传统函数替代箭头函数
|
||||
* @param {Function} func - 要防抖的函数
|
||||
* @param {number} delay - 延迟时间(毫秒)
|
||||
* @returns {Function} - 返回防抖后的函数
|
||||
*/
|
||||
function debounce(func, delay) {
|
||||
let timeoutId;
|
||||
return function(...args) {
|
||||
var timeoutId;
|
||||
var that = this;
|
||||
|
||||
return function() {
|
||||
var context = this;
|
||||
var args = arguments;
|
||||
|
||||
clearTimeout(timeoutId);
|
||||
timeoutId = setTimeout(() => func.apply(this, args), delay);
|
||||
timeoutId = setTimeout(function() {
|
||||
func.apply(context || that, args);
|
||||
}, delay);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 节流函数
|
||||
* 节流函数 - 使用传统函数替代箭头函数
|
||||
* @param {Function} func - 要节流的函数
|
||||
* @param {number} limit - 时间限制(毫秒)
|
||||
* @returns {Function} - 返回节流后的函数
|
||||
*/
|
||||
function throttle(func, limit) {
|
||||
let inThrottle;
|
||||
return function(...args) {
|
||||
var inThrottle;
|
||||
var that = this;
|
||||
|
||||
return function() {
|
||||
var context = this;
|
||||
var args = arguments;
|
||||
|
||||
if (!inThrottle) {
|
||||
func.apply(this, args);
|
||||
func.apply(context || that, args);
|
||||
inThrottle = true;
|
||||
setTimeout(() => inThrottle = false, limit);
|
||||
setTimeout(function() {
|
||||
inThrottle = false;
|
||||
}, limit);
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user