我的功能在页面加载时运行,但我只希望它在选择一个选定区域时运行

时间:2016-08-25 15:33:27

标签: javascript jquery tabletop.js

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

顺便说一句,这是一个粗俗的页面,它基于伟大的网站

这是codepen页面:

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();

 }); 

});

5 个答案:

答案 0 :(得分:0)

您调用saveData作为Tabletop.init andsaveData的回调调用newQuote

您应该在saveData

中删除对newQuote的调用

答案 1 :(得分:0)

Ur在你的回调中调用newQuote()。

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

答案 2 :(得分:0)

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

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; 
}

答案 3 :(得分:0)

您可以添加点击事件处理程序并在

之后触发点击事件
 $(".newquote").click(function(){
           $.post("your.php".function(){
             //code logic
          })
     })

答案 4 :(得分:0)

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

Tabletop完成后,方法saveData将被执行。

在方法saveData中,您明确要求newQuote()

只需删除它:

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