在本地存储中保存javascript数据的最佳方法

时间:2018-08-23 19:10:53

标签: javascript html css local-storage

我希望能够创建JavaScript注释对象并使用导航栏窗格动态删除它们。

var sel = window.getSelection();
var range = sel.getRangeAt(0);
var editor = { "startContainer": range.startContainer, "startOffset": range.startOffset, "endContainer": range.endContainer, "endOffset": range.endOffset };

然后使用一条消息,我将位置和消息传递到一个函数中以添加注释:

Notes(editor, message);
function Notes(location, note) {
  this.location = location;
  this.note = note;
}

我正尽全力围绕如何实际在本地保存数据。

function addNote() {
  // if(tyepof(Storage) !== "undefined"){
  //   if(localStorage.notes){
  //     localStorage.notes
  //   } else {
  //     localStorage.notes = 
  //   }

  localStorage.setItem()
}

localStorage走了吗?我知道sessionStorage只存储一个会话。

3 个答案:

答案 0 :(得分:4)

您有很多方法可以做到这一点。实际上,有太多事实不能解释所有这些。这取决于您的实际意图。如果您只想留个笔记,可以随意放松,可以使用localStorage。

但是对于大多数应用程序,通常会将数据发送到负责存储数据的服务器。在服务器中,数据可以存储在数据库中,在本地文件中,有很多方法。 服务器可以是Node.js(如果您只想坚持使用js),也可以是任何其他具有服务器功能的语言。那将是全部。最常用的是Node,PHP,Python,Java等。 您将准备一个特定的URL,以接收包含需要保存的数据的帖子,然后使客户端使用该URL向其发送Ajax请求。 在这个问题中,您可以获得一些如何开始执行此操作的示例:

Basic Ajax send/receive with node.js

服务器保存部分由您决定:)

修改

这是有关localStorage的小教程

https://www.taniarascia.com/how-to-use-local-storage-with-javascript/

请记住,每次重新加载页面时,所有内容都会丢失。为了保存数据,您必须将其发送到服务器。

另一件事:您无需购买专用服务器即可执行此操作。您可以在自己的机器上实现服务器。这是一个相对容易的任务。没有那么复杂。我建议您在排除这种情况之前,先看一下上面有关基本ajax发送/接收的SO问题。

答案 1 :(得分:3)

这是一种从 --- title: "Shiny app - stackoverflow help" author: "Johan Rosa" date: "August 8, 2018" output: ioslides_presentation runtime: shiny --- ## first slide ```{r} fluidPage( # Application title titlePanel("Old Faithful Geyser Data"), # Sidebar with a slider input for number of bins sidebarLayout( sidebarPanel( sliderInput("bins", "Number of bins:", min = 1, max = 50, value = 30) ), # Show a plot of the generated distribution mainPanel( plotOutput("distPlot") ) ) ) ``` ```{r} output$distPlot <- renderPlot({ # generate bins based on input$bins from ui.R x <- faithful[, 2] bins <- seq(min(x), max(x), length.out = input$bins + 1) # draw the histogram with the specified number of bins hist(x, breaks = bins, col = 'darkgray', border = 'white') }) ``` ## next slide #The other app you want toy show, just the way i did it in the first slide 调用中生成一些元素的快速方法,并且可能还会帮助您以及Nelson的回答。单击小提琴中的按钮,您将看到代码捕获localStorage对象,并使用它们创建一些简单的localStorage.getItem()

提琴: http://jsfiddle.net/kfrvdnux/

示例代码:

HTML

<li>'s

JS

<button id='save'>Click the save button...</button>
<div id='content'></div>

答案 2 :(得分:1)

您是否要在本地将.txt文件保存到计算机?我不相信JavaScript具有此功能,因为这将是一个巨大的安全漏洞。我的理解是,您可以在本地计算机上创建cookie文件,但仅此而已。

如果需要导出文件,则始终可以使用ASP.NET/PHP在服务器上创建文件,然后用户可以单击一个链接,提示您保存动态创建的文件。

根据下面的注释,您应该创建一个对象数组。

var array = [];
array[array.length] = {name: 'NAME CONTENT', other: 'Other content', number: 1}
array[array.length] = {name: 'NAME CONTENT 2', other: 'Other content 2', number: 1}

然后您可以通过执行类似的操作来获得对对象执行操作的功能

PrintInfo(array[i]);

function PrintInfo(aSingleObject){
    console.log(aSingleObject.name);
    console.log(aSingleObject.other);
    console.log(aSingleObject.number);
}

要使用splice命令从阵列中删除对象

var array = [2, 5, 9];
console.log(array)
var index = array.indexOf(5);
if (index > -1) {
  array.splice(index, 1);
}
// array = [2, 9]
console.log(array);