当页面加载时,我的函数是 运行ning,但我只希望它在选定区域被选中时 运行

My function is running when page loads, but I only want it to run when a selected area is picked

我正在用 JavaScript 和 Tabletop.js 制作一个随机报价生成器。当我的页面加载时,从我的电子表格中提取报价并生成的功能会自动初始化。除非单击 page/area,否则我不希望它生成新报价。

顺便说一句,这是一个低俗的页面,基于 greatfu**ingstartupadvice.com

这是代码笔页面:

http://codepen.io/JonLangel/pen/kXdmqP?editors=1010

这是来自 Codepen 页面的 JS:

var my_spreadsheet = 'https://docs.google.com/spreadsheets/d/1sX822Oiga0j0eHC8PvegRo6W8GGC0a28nVgnvSsOqo/pubhtml';

var sheet_data;

function init() {
  Tabletop.init( { 
    key: my_spreadsheet, 
    callback: saveData,
    simpleSheet: true
    });
}
function saveData(data, tabletop) {
  sheet_data = data; 
  newQuote(); 
}

 function newQuote() {
    var randNum = Math.floor(Math.random() * (sheet_data.length));

    $("#advice").html(sheet_data[randNum].Advice).addClass('animated     zoomIn').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
      $(this).removeClass();
        });
 }
 $(document).ready(function() {

   init();

   $('.container').onclick(function(){
     newQuote();

 }); 

});

您调用 saveData 作为 Tabletop.init 的回调,而 saveData 正在调用 newQuote

您应该简单地删除 saveData 中对 newQuote 的调用

你在回调中调用了 newQuote()。

从您的 saveData 函数中删除 newQuote()。

在页面开头您正在初始化 Tabletop,但在初始化的回调中:

callback: saveData //saveData is callback of init

并编写此函数的代码:

function saveData(data, tabletop) {
  sheet_data = data; 
  newQuote();  //here You have newQuote called
}

从 saveData 中删除 newQuote(),页面加载时将不会生成报价

function saveData(data, tabletop) {
  sheet_data = data; 
}

您可以在

之后添加点击事件处理程序并触发点击事件
 $(".newquote").click(function(){
           $.post("your.php".function(){
             //code logic
          })
     })

您在 Tabletop.init 的回调中添加了一个 saveData

Tabletop 完成初始化时,方法 saveData 被执行。

在方法 saveData 中,您显式调用了 newQuote()

简单地删除它:

function saveData(data, tabletop) {
   sheet_data = data; 
   //newQuote();  // Remove the call to newQuote();
}