Javascript 如何使HTML网站具有交互性,以便当用户单击“删除”按钮时,即使在重新加载时,它也会为所有用户进行更改?
我用HTML制作了一个表,并添加了一个删除按钮,这样它就可以删除表中最后记录的行 “删除”按钮起作用,但当我刷新页面时,编辑就消失了,一切都恢复到原始状态 我如何使其在用户编辑页面时永久更改 这是一个演示: 如果这不起作用:Javascript 如何使HTML网站具有交互性,以便当用户单击“删除”按钮时,即使在重新加载时,它也会为所有用户进行更改?,javascript,html,jquery,css,responsive-design,Javascript,Html,Jquery,Css,Responsive Design,我用HTML制作了一个表,并添加了一个删除按钮,这样它就可以删除表中最后记录的行 “删除”按钮起作用,但当我刷新页面时,编辑就消失了,一切都恢复到原始状态 我如何使其在用户编辑页面时永久更改 这是一个演示: 如果这不起作用: 正文{ 背景色:#ffffff; 字体系列:candara,monospace; 文本对齐:居中; 字体大小:粗体; 边缘顶部:5px; 文本转换:大写; 高度:600px; 宽度:1000px; 颜色:#1b1186; } #删除{ 背景色:#1b1186; 宽度:25
正文{
背景色:#ffffff;
字体系列:candara,monospace;
文本对齐:居中;
字体大小:粗体;
边缘顶部:5px;
文本转换:大写;
高度:600px;
宽度:1000px;
颜色:#1b1186;
}
#删除{
背景色:#1b1186;
宽度:250px;
颜色:白色;
边缘顶部:50px;
}
#删除:悬停{
背景色:#ff4625;
光标:指针;
}
钮扣{
背景色:#1b1186;
边界半径:0px;
边界:0px#中交;
字体系列:candara,monospace;
字体大小:粗体;
边缘顶部:15px;
颜色:#ffffff;
文本对齐:居中;
字号:18px;
填充:10px;
宽度:200px;
过渡:所有1;
光标:指针;
文本转换:大写;
显示:内联块;
文字装饰:无;
}
按钮:悬停{
背景色:#fff06d;
颜色:黑色;
右边填充:25px;
左侧填充:25px;
}
桌子{
边框:5px,#1b1186
}
家
设置
增加小时数
$(文档).ready(函数(){
var table=$('#HOURTABLE').DataTable();
$('HOURTABLE tbody')。在('click','tr',function(){
if($(this).hasClass('selected')){
$(this.removeClass('selected');
}
否则{
表.$('tr.selected')。removeClass('selected');
$(this.addClass('selected');
}
});
});
一场
#小时数
日期
组织
描述
1.
4.
4/5/2020
辅导
很有趣
2.
67
4/8/2020
辅导
这很有趣
删除行
var x=document.getElementById(“HOURTABLE”).rows.length;
函数行(){
//删除行(索引-0)。
document.getElementById(“HOURTABLE”).deleteRow(1);
}
如果没有像PHP、node.js、firebase这样的后端,就无法做到这一点
您可以使用localStorage进行黑客攻击,但只有当用户不删除浏览器数据时,更改才会保留。如果没有像PHP、node.js、firebase这样的后端,您就无法做到这一点
您可以使用localStorage进行黑客攻击,但只有当用户不删除浏览器数据时,更改才会保留。首先,如果要显示动态内容,必须使用数据库,没有其他方法。
第二,若要实时更改内容,必须首先使用firebase、websocket或任何其他技术,若要显示动态内容,必须使用数据库,则没有其他方法。
其次,如果您想实时更改内容,您必须使用firebase、websocket或任何其他技术在本例中,我使用的是localstorage,我创建了一些函数,以便您可以处理数据
<html>
<head>
<button type="button" onclick="window.location.href='userhome.html';">Home</button>
<button type="button" onclick="window.location.href='settings.html';">Settings</button>
<button type="button" onclick="window.location.href='userhome.html';">Add Hours</button>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" />
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
</head>
<body>
<table id="HOURTABLE" contenteditable="true" class="display" style="width:100%">
<thead>
<tr>
<th>Session</th>
<th># Hours</th>
<th>Date</th>
<th>Organization</th>
<th>Description</th>
</tr>
</thead>
<tbody class="body-container">
</tbody>
<tfoot>
</tfoot>
<br>
<button ondblclick="deleteRowSelected()">Delete Row</button>
<script>
function getData() {
let local = localStorage.getItem('data');
if (local == null) {
local = setData();
}
return JSON.parse(local);
}
function setData(data = null) {
if (data == null) {
data =
[
{
session: 1,
hours: 4,
date: '4/5/2020',
organization: 'Tutoring',
description: 'It was fun'
},
{
session: 2,
hours: 67,
date: '4/8/2020',
organization: 'Tutoring',
description: 'It was interesting'
}
];
}
const textData = JSON.stringify(data);
localStorage.removeItem('data');
localStorage.setItem('data', textData);
return textData;
}
function generateRow(row) {
return `
<tr data-session="${row.session}">
<th>${row.session}</th>
<th>${row.hours}</th>
<th>${row.date}</th>
<th>${row.organization}</th>
<th>${row.description}</th>
</tr>`;
}
function deleteRow(session) {
const data = getData();
let newArray = [];
data.forEach(element => {
if (element.session !== session) {
newArray.push(element);
}
})
console.log(newArray);
setData(newArray);
load();
}
function load() {
const data = getData();
const container = $('.body-container');
container.html('');
if (container.length > 0) {
data.forEach(row => {
container.append(generateRow(row));
})
} else {
container.appent('<tr>empty</tr>');
}
}
var x = document.getElementById("HOURTABLE").rows.length;
function deleteRowSelected() {
const row = $('.body-container').find('tr.selected');
if (row.length == 0) {
alert('you must select a row');
} else {
row.remove();
deleteRow(row.data('session'));
}
}
$(document).ready(function () {
var table = $('#HOURTABLE').DataTable();
$('#HOURTABLE tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
}
else {
table.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
}
});
load();
});
</script>
</table>
</body>
</html>
家
设置
增加小时数
一场
#小时数
日期
组织
描述
删除行
函数getData(){
让local=localStorage.getItem('data');
if(local==null){
local=setData();
}
返回JSON.parse(本地);
}
函数setData(数据=null){
如果(数据==null){
资料=
[
{
会议:1,
时间:4,,
日期:“2020年4月5日”,
组织:'辅导',
描述:“很有趣”
},
{
会议:2,
小时:67,
日期:“2020年4月8日”,
组织:'辅导',
描述:“很有趣”
}
];
}
const textData=JSON.stringify(数据);
localStorage.removietem('data');
setItem('data',textData);
返回文本数据;
}
函数生成器OW(行){
返回`
${row.session}
${row.hours}
${row.date}
${row.organization}
${row.description}
`;
}
函数deleteRow(会话){
const data=getData();
设newArray=[];
data.forEach(元素=>{
if(element.session!==会话){
newArray.push(元素);
}
})
log(newArray);
setData(新数组);
加载();
}
函数加载(){
const data=getData();
const container=$('.body container');
container.html(“”);
如果(容器长度>0){
data.forEach(行=>{
container.append(generateRow(row));
})
}否则{
容器。外观(“空”);
}
}
var x=document.getElementById(“HOURTABLE”).rows.length;
函数deleteRowSelected(){
常量行=$('.body container')。查找('tr.selected');
if(row.length==0){
警报(“您必须选择一行”);
}否则{
row.remove();
deleteRow(row.data('session'));
}
}
$(文档).ready(函数(){
变量表=$('#HOURTABLE').DataT