@咯叽,好的,我明白了。以下是将 JavaScript 代码放在 body 后面的示例:
<!DOCTYPE html>
<html>
<head>
<title>随机轮播文字</title>
</head>
<body>
<div id="area1">区域1</div>
<div id="area2">区域2</div>
<div id="area3">区域3</div>
<div id="area4">区域4</div>
<p>文字1</p>
<p>文字2</p>
<p>文字3</p>
<p>文字4</p>
<p>文字5</p>
<script>
document.addEventListener("DOMContentLoaded", function() {
var paragraphs = document.getElementsByTagName("p");
function getRandomWord() {
var words = ["文字1", "文字2", "文字3", "文字4", "文字5"];
var randomIndex = Math.floor(Math.random() * words.length);
return words[randomIndex];
}
function updateText() {
for (var i = 0; i < paragraphs.length; i++) {
paragraphs[i].textContent = getRandomWord();
}
}
// 初始加载
updateText();
// 每隔1秒更新一次文字
setInterval(updateText, 1000);
});
</script>
</body>
</html>
在这个例子中,JavaScript 代码被直接嵌入到 <script>
标签中,并且放在了页面的 body 后面。当页面加载完成后,代码将找到所有的 <p>
标签,并将它们的文字内容随机更新,实现随机轮播效果。
@咯叽,好的,如果要改成随机轮播页面上已存在的 <p>
标签内的文字,可以按照以下方式修改 JavaScript 代码:
document.addEventListener("DOMContentLoaded", function() {
var paragraphs = document.getElementsByTagName("p");
function getRandomWord() {
var words = ["文字1", "文字2", "文字3", "文字4", "文字5"];
var randomIndex = Math.floor(Math.random() * words.length);
return words[randomIndex];
}
function updateText() {
for (var i = 0; i < paragraphs.length; i++) {
paragraphs[i].textContent = getRandomWord();
}
}
// 初始加载
updateText();
// 每隔1秒更新一次文字
setInterval(updateText, 1000);
});
这样,代码会在页面加载完成后找到所有 <p>
标签,并将它们的文字内容随机更新。
@咯叽,好的,以下是一个使用document.addEventListener("DOMContentLoaded", ...)
在页面加载完成后刷新四个区域的随机轮播文字的示例代码:
<!DOCTYPE html>
<html>
<head>
<title>随机轮播文字</title>
</head>
<body>
<div id="area1">区域1</div>
<div id="area2">区域2</div>
<div id="area3">区域3</div>
<div id="area4">区域4</div>
<script src="yourScript.js"></script>
</body>
</html>
document.addEventListener("DOMContentLoaded", function() {
var area1 = document.getElementById("area1");
var area2 = document.getElementById("area2");
var area3 = document.getElementById("area3");
var area4 = document.getElementById("area4");
function getRandomWord() {
var words = ["文字1", "文字2", "文字3", "文字4", "文字5"];
var randomIndex = Math.floor(Math.random() * words.length);
return words[randomIndex];
}
function updateText() {
area1.textContent = getRandomWord();
area2.textContent = getRandomWord();
area3.textContent = getRandomWord();
area4.textContent = getRandomWord();
}
// 初始加载
updateText();
// 每隔1秒更新一次文字
setInterval(updateText, 1000);
});
请将以上代码保存为一个名为yourScript.js
的 JavaScript 文件,并确保将其引入到页面中。当页面加载完成后,该代码将随机更新四个区域的文字内容,并且每隔一秒钟更新一次。
@咯叽,明白了,您希望在用户点击 summary 左边 10px 区域后,弹出一个确认对话框,用户可以选择确认复制或取消操作,不需要额外的复制成功或失败提示弹窗。
以下是经过修改的代码,满足您的需求:
document.addEventListener("DOMContentLoaded", function() {
var summaries = document.querySelectorAll('summary');
summaries.forEach(function(summary, index) {
// 为每个summary添加一个id,格式为anchor-数字
summary.id = 'anchor-' + (index + 1);
summary.addEventListener('click', function(event) {
// 确保点击事件发生在左边10px区域
if (event.offsetX <= 10) {
// 显示确认复制对话框
if (window.confirm('确认复制列表数量描点?')) {
// 获取当前 URL 的基本部分
var baseUrl = window.location.href.split('#')[0];
// 创建一个临时的textarea元素来包含要复制的文本
var textArea = document.createElement('textarea');
textArea.value = baseUrl + '#' + this.id;
document.body.appendChild(textArea);
textArea.select();
try {
// 使用document.execCommand('copy')执行复制操作
document.execCommand('copy');
} catch (err) {
console.error('无法复制文本:', err);
}
// 移除textarea元素
document.body.removeChild(textArea);
}
}
});
});
});
这段代码将在用户点击 summary 左边 10px 区域时,弹出一个确认对话框。用户可以选择确认复制或取消操作。如果用户点击确认,则执行复制操作;如果用户点击取消,则不执行任何操作。
@咯叽,了解您的需求,您希望去掉复制成功或复制失败的提示弹窗,只保留控制台中的日志。以下是修改后的代码:
document.addEventListener("DOMContentLoaded", function() {
var summaries = document.querySelectorAll('summary');
summaries.forEach(function(summary, index) {
// 为每个summary添加一个id,格式为anchor-数字
summary.id = 'anchor-' + (index + 1);
summary.addEventListener('click', function(event) {
// 确保点击事件发生在左边10px区域
if (event.offsetX <= 10) {
// 获取当前 URL 的基本部分
var baseUrl = window.location.href.split('#')[0];
// 创建一个临时的textarea元素来包含要复制的文本
var textArea = document.createElement('textarea');
textArea.value = baseUrl + '#' + this.id;
document.body.appendChild(textArea);
textArea.select();
try {
// 使用document.execCommand('copy')执行复制操作
document.execCommand('copy');
console.log('复制成功:', baseUrl + '#' + this.id);
} catch (err) {
console.error('无法复制文本:', err);
}
// 移除textarea元素
document.body.removeChild(textArea);
}
});
});
});
在这个代码中,我们移除了 navigator.clipboard.writeText()
方法及其相关的 console.log
和 alert
语句。现在,复制成功或失败的信息只会显示在浏览器的控制台中。
@咯叽,了解了,您希望使用一个确认对话框来提示用户,而不是在控制台或弹窗中显示“复制成功”或“无法复制文本”的信息。以下是修改后的代码,它将使用您提供的确认对话框来提示用户:
document.addEventListener("DOMContentLoaded", function() {
var summaries = document.querySelectorAll('summary');
summaries.forEach(function(summary, index) {
// 为每个summary添加一个id,格式为anchor-数字
summary.id = 'anchor-' + (index + 1);
summary.addEventListener('click', function(event) {
// 确保点击事件发生在左边10px区域
if (event.offsetX <= 10) {
// 显示确认复制对话框
if (!window.confirm('确认复制列表数量描点?')) {
return; // 如果用户取消确认,则不执行复制操作
}
// 获取当前 URL 的基本部分
var baseUrl = window.location.href.split('#')[0];
// 创建一个临时的textarea元素来包含要复制的文本
var textArea = document.createElement('textarea');
textArea.value = baseUrl + '#' + this.id;
document.body.appendChild(textArea);
textArea.select();
try {
// 使用document.execCommand('copy')执行复制操作
document.execCommand('copy');
console.log('复制成功:', baseUrl + '#' + this.id);
} catch (err) {
console.error('无法复制文本:', err);
}
// 移除textarea元素
document.body.removeChild(textArea);
}
});
});
});
在这个代码中,我们添加了一个 window.confirm
对话框来询问用户是否确认复制列表数量描点。如果用户点击“取消”,则取消复制操作;如果用户点击“确定”,则执行复制操作。同时,我们保留了 summary 的展开和收起功能。
@咯叽,感谢您的反馈。我会调整代码以确保在点击 summary 左边 10px 区域才执行复制操作,并且保持 summary 的展开和收起功能正常工作。
请尝试下面经过修改的代码:
document.addEventListener("DOMContentLoaded", function() {
var summaries = document.querySelectorAll('summary');
summaries.forEach(function(summary, index) {
// 为每个summary添加一个id,格式为anchor-数字
summary.id = 'anchor-' + (index + 1);
summary.addEventListener('click', function(event) {
// 确保点击事件发生在左边10px区域
if (event.offsetX <= 10) {
// 获取当前 URL 的基本部分
var baseUrl = window.location.href.split('#')[0];
// 创建一个临时的textarea元素来包含要复制的文本
var textArea = document.createElement('textarea');
textArea.value = baseUrl + '#' + this.id;
document.body.appendChild(textArea);
textArea.select();
try {
// 使用document.execCommand('copy')执行复制操作
document.execCommand('copy');
console.log('复制成功:', baseUrl + '#' + this.id);
} catch (err) {
console.error('无法复制文本:', err);
}
// 移除textarea元素
document.body.removeChild(textArea);
}
});
});
});
在这个修改后的代码中,我们添加了条件检查来确保点击事件发生在 summary 左边 10px 区域内(使用事件的 offsetX
属性)。只有在满足这个条件时才执行复制操作。同时,我们保留了 summary 的展开和收起功能。
现在,当用户点击 summary 左边 10px 区域内时,才会复制带有相应序号的 URL,并且 summary 的展开和收起功能不受影响。请尝试这个更新后的代码。