有一个基于 JavaScript 的赞美生成器,只需单击一个按钮即可生成新的赞美。用户可以不断产生新的赞美,直到得到他们喜欢的赞美。
我想添加通过 Twitter 分享任何生成的赞美的选项,但我不确定如何将赞美文本添加到 Twitter 共享者链接。目前,赞美文本仅显示在具有特定 ID 的 div 中。
生成的赞美以“compliment”的 id 输出到 DIV,并按我的要求工作。但是,我不知道如何将赞美文本也输出到 Twitter 共享链接中——特别是如果文本的格式需要与它在 div 中的显示方式不同)。
到目前为止,我已经设置了两个 jsfiddles。
这是我的第一次尝试:
http://jsfiddle.net/LosHantos/g04u3qxa/
这是那个小提琴的JavaScript:
var Complimenter = primish({
a: 'lovely,beautiful,gorgeous,kind,wonderful,nice,perfect'.split(','),
b: 'good-looking,super-duper,awesome'.split(','),
c: 'pal,friend,person,human'.split(','),
d: 'improver,supporter,juggler'.split(','),
combos: ['a,b,c', 'a,b,d', 'b,c', 'b,d'],
constructor: function(element) {
element && (this.element = element);
this.combos = this.combos.map(function(c) {
return c.split(',')
});
this.compliment();
},
compliment: function(e) {
e && e.preventDefault();
var compliment = this.get();
this.element && (this.element.innerHTML = compliment);
return compliment;
},
get: function() {
var c = this.combos,
self = this;
return c[Math.random() * c.length >> 0].map(function(k) {
return self[k][Math.random() * self[k].length >> 0]
}).join(' ');
}
});
(function() {
var complimenter = new Complimenter(document.getElementById('compliment'));
document.querySelector('.heading').addEventListener('click', complimenter.compliment.bind(complimenter));
}());
我从原始小提琴中更改了 Twitter 共享链接,然后将这个新变量添加到 JS:
var link = "https://twitter.com/intent/tweet?hashtags=compliment&related=complimenttime&text=" + complimenter;
document.getElementById('tweet').setAttribute("href", link); //assigns url above as href to twitter button
document.getElementById('compliment').innerHTML = "<span class='bold'>" + complimenter + "</span>" + "<br />";
该更改的小提琴在这里http://jsfiddle.net/LosHantos/catx520n/ (我的第二次尝试)
但是,我看到的问题是:
- 它显示字符串
[object object]
而不是赞美 - 如果您单击
generate a new compliment
,则会替换为赞美,[object object]
但 Twitter 共享者仍会使用[object object]