2012-07-09 84 views
1

我正在一个网站上每页都会有多个“保存”按钮,并且我需要为每个网站都进行回调,以便我可以在自己的系统中注册用户已完成保存操作。我想我已经想出了如何以编程的方式做到这一点......但是对于我创建的每个小部件,当我尝试通过SDK将其添加到DOM时,我得到了“无法读取属性”样式的“空”错误。编程保存按钮不起作用

这里是我的JavaScript

<script type='text/javascript'> 
    (function() { 
     window.___fourSq = { 
      "uid": "31904528", 
      "secure": true, 
      "explicit": false, 
      "onReady": function() { 
       $('.fourSquareVenueId').each(function() { 
        var vid = $(this).val(); 
        var widget = new fourSq.widget.SaveTo({ 
         "vid": vid 
        }); 
        var container = $(this).parent().find('.placeholder'); 
        widget.replace(container); 
       }); 
      } 
     }; 
     var s = document.createElement('script'); 
     s.type = 'text/javascript'; 
     s.src = 'https://platform-s.foursquare.com/js/widgets.js'; 
     s.async = true; 
     var ph = document.getElementsByTagName('script')[0]; 
     ph.parentNode.insertBefore(s, ph); 
    })(); 

基本上,当SDK被加载时,我经过,发现我所有的与场地ID隐藏的投入在里面,并有我尝试创建'保存'小部件替换一个空的锚标记我有作为占位符。

下面是在Chrome控制台错误的截图链接:

http://gyazo.com/f011c25bb88181251e2820e748b41093.png

任何帮助将不胜感激。谢谢。

编辑:这里是Foursquare的文档,我正在使用: https://developer.foursquare.com/overview/widgets#programmatic-instantiation

回答

0

一个长镜头,但你改变数组对象的原型?

+0

不,完全没有。 – vnads 2012-07-09 19:48:00

+1

我明白了,如果你仔细想想它其实很明显。我发送了一个jQuery对象,当foursquare的sdk想让我发送一个DOM元素。将容器变量的行更改为以下内容:var container = $(this).parent()。find('a')[0]; – vnads 2012-07-09 22:02:07

+0

这可以编辑得更清楚一点,或者vnads是否可以将您的评论发布为解决方案?我花了一点时间弄清楚了,但是关于返回DOM元素的线索也解决了我的问题。但不知道是否应该注意这一点,因为它不是很清楚.... – 2013-06-11 01:48:22