如何将结果保存到localStorage

时间:2017-09-29 07:22:28

标签: javascript jquery html5 local-storage

我是func getAllImagesURL() -> [URL] { var arr_URL = [URL]() for index in 0..<fetchResult.count { imgManager.requestImageData(for: fetchResult.object(at: index) as PHAsset, options: requestOptions, resultHandler: { (imagedata, dataUTI, orientation, info) in if let fileName = (info?["PHImageFileURLKey"] as? URL) { //do sth with file name arr_URL.append(fileName) } }) } return arr_URL } func getImage(assetUrl: URL) -> UIImage? { let asset = PHAsset.fetchAssets(withALAssetURLs: [assetUrl], options: nil) guard let result = asset.firstObject else { return nil } var assetImage: UIImage? let options = PHImageRequestOptions() options.isSynchronous = true PHImageManager.default().requestImage(for: result, targetSize: UIScreen.main.bounds.size, contentMode: PHImageContentMode.aspectFill, options: options) { image, info in assetImage = image } return assetImage } 的新用户,这是我的第一个实施,我不确定它是否正确,我需要你的帮助,我试图做出简单的反击开始计算每次点击,并将结果存储在HTML中,这就是我所能做的 但它没有用,你能不能告诉我我做错了什么?

由于

&#13;
&#13;
jQuery
&#13;
localStorage
&#13;
$(function() {
  $('.container li').click(function() {
    var btn = $(this).attr("data-page");
    var element = $('.counter[data-page="' + btn + '"]').html();
    element++
    $('.counter[data-page="' + btn + '"]').html(element);

    localStorage.setItem('save', $('.counter[data-page="' + btn + '"]').html());

    if (localStorage.getItem('save')) {
      $('.counter[data-page="' + btn + '"]').html(localStorage.getItem('save'));
    }
  });
});
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:1)

您需要在页面加载时从本地存储加载数据。现在它只在保存后加载,没有效果。

每个元素也保存到本地存储的同一部分,因此每次加载页面时它们都是相同的。您需要根据数据页面保存到索引。

答案 1 :(得分:1)

您需要首先使用localStorage中的值初始化您的按钮。然后你不需要再次检索它们,你只需要操作html中的值并在localStorage中设置新的计数器。

此外,您还需要在localStorage

中有一个按钮

// Just to make this snippet work,
// because localStorage is forbiden here

// database = localStorage
database = {
  store: {},
  getItem: function(key) {
    return this.store[key];
  },
  setItem: function(key, val) {
    this.store[key] = val;
  },
}

$(function() {
  $(".counter").each((_, element) => {
    const $btn = $(element);
    const key = `save-${$btn.attr("data-page")}`;
    
    $btn.html(database.getItem(key) || 0);
  });
  
  $(".container li").click(function() {
    const $btn = $(this).find(".counter");
    const key = `save-${$btn.attr("data-page")}`;
    const counter = (+$btn.html()) + 1;

    $btn.html(counter);
    database.setItem(key, counter);
  });
});
ul {
  padding: 0;
  margin: 0;
  list-style: none;
}

a {
  text-decoration: none;
  background: blue;
  color: #fff;
  padding: 10px;
}

ul li {
  display: inline-block;
}
<ul class="container">
  <li data-page="facebook">
    <a href="#" class="counter" data-page="facebook">4100</a>
  </li>

  <li data-page="twitter">
    <a href="#" class="counter" data-page="twitter">4100</a>
  </li>
</ul>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 2 :(得分:0)

试试这个简单的:

$('.container li').click(function() {
  if (localStorage.count) {
    localStorage.count++
  } else {
    localStorage.count = 1;
  }
})

答案 3 :(得分:0)

使用不同计数器的不同变量更新脚本。它从localStorage加载计数器值,或者如果不可用则将它们设置为0。它还使用两个单独的变量来存储值。

我使用了您的代码,因此您可以看到解决方案中的不同之处和错过的内容

$(function() {       
  var cntfb = localStorage.getItem('save-facebook');
  $('.counter[data-page="facebook"]').html(cntfb ? cntfb : 0);
  var cnttw = localStorage.getItem('save-twitter');
  $('.counter[data-page="twitter"]').html(cnttw ? cnttw : 0);
  $('.container li').click(function() {
    var btn = $(this).attr("data-page");
    var element = $('.counter[data-page="' + btn + '"]').html();
    element++;
    $('.counter[data-page="' + btn + '"]').html(element);
    localStorage.setItem('save-' + btn, $('.counter[data-page="' + btn + '"]').html());
    if (localStorage.getItem('save-' + btn)) {
      $('.counter[data-page="' + btn + '"]').html(localStorage.getItem('save-' + btn));
    }
  });
});

答案 4 :(得分:0)

您可以再使用一个解决方案https://jsfiddle.net/thrh78u0/

&#13;
&#13;
$(function() {
  $('.container li').click(function() {
    var btn = $(this).attr("data-page");
    var element = $('.counter[data-page="' + btn + '"]').html();
    element++
    $('.counter[data-page="' + btn + '"]').html(element);

    localStorage.setItem('save' + btn, element);

    if (localStorage.getItem('save')) {
      $('.counter[data-page="' + btn + '"]').html(localStorage.getItem('save'));
    }
  });
});
&#13;
ul {
  padding: 0;
  margin: 0;
  list-style: none;
}

a {
  text-decoration: none;
  background: blue;
  color: #fff;
  padding: 10px;
}

ul li {
  display: inline-block;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="container">
  <li data-page="facebook">
    <a href="#" class='counter' data-page="facebook">4100</a>
  </li>

  <li data-page="twitter">
    <a href="#" class='counter' data-page="twitter">4100</a>
  </li>
</ul>
&#13;
&#13;
&#13;

希望这会对你有所帮助。