【发布时间】:2017-06-21 06:57:54
【问题描述】:
我想对所有 3 个函数(newQuote、postFB 和 tweet)使用相同的 var randomQuote,但这似乎不起作用。
如果我把它放在 newQuote 函数中,只有这个函数可以工作,如果只在外面 - 只有共享函数可以工作,并且 newQuote 只会在点击时更改一次报价 (?)。
我可以让所有 3 个函数都工作的唯一方法是,如果我重复它——一个在 newQuote 函数内部,一个在 newQuote 函数外部——有什么方法可以让它“干燥”吗?
var randomQuote = Math.floor(Math.random() * (quotes.length)); //outside
document.getElementById("refresh").onclick = newQuote;
function newQuote() {
var randomQuote = Math.floor(Math.random() * (quotes.length)); //inside
document.getElementById("facebook").onclick = postFB;
function postFB() {
var url = "http://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(quotes[randomQuote]);
window.open(url);
}
- 此处不包含 twitter 功能 - 与 FB 相同的想法
任何建议我(初学者)做错了什么?先感谢您!
【问题讨论】:
-
您的 newQuote 函数调用应该包含用于刷新 onclick 事件的括号。此外,您的 newQuote 函数需要一个右花括号。至于在外部声明后访问 newQuote 内部的 randomQuote...只需将 randomQuote 作为参数传递给 newQuote 并在函数内部使用它执行您需要的操作。
-
感谢您的回复! newQuote with parenthesis?hmm - js book:“与内联事件处理不同,“=”后面的函数名不在引号中/函数名后面没有括号”/我还是尝试了这个-不起作用//缺少大括号- 只是没有复制到这里 /chrome 控制台对于查找此类错误非常有帮助。不确定我是否理解“传递并做我必须对函数做的事情” - 试图作为参数传递 - 弄乱了我的照片/如果我用这行代码重复自己,它的唯一工作方式:( 代码链接@ 987654321@