这是显示 Tweet 按钮的表单上的功能代码 - 该按钮位于显示多个图像的表单上 - 当用户单击其中一个图像时,它成为“选定”图像,并且 Tweet 按钮应该发送推文所选图像的名称和网址:
<a id="tweetBtnId" href="https://twitter.com/share" class="twitter-share-button"
data-text="Check me out on OurWebSite!"
data-url=http://$ourSiteURL
data-via=http://$ourSiteURL data-size="medium" data-count="none">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];
if(!d.getElementById(id)){js=d.createElement(s); js.id=id;
js.src="//platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js,fjs);}}
(document,"script", "twitter-wjs");</script>
我有一个用于显示图像的 div 的“onclick()”处理程序。当用户点击其中一张图片时,会调用其 div 的 onclick() 处理程序并将该图像设置为页面上的“currentlySelectedImage”——然后 onclick() 处理程序需要更新 Tweet 按钮的“数据文本”带有刚刚选择的图像名称的属性:
// This is part of the code of the 'onclick()' handler for
// the image being selected.
<script>
function handleImageOnClick()
{
var myDynamicTweetText = "name of currently-selected image goes here";
var elem = document.getElementById("tweetBtnId");
alert("The elem is: " + elem); // elem IS NULL !! Dagnabbit.
// this fails because 'elem' is null
elem.setAttribute("data-text", myDynamicTweetText);
// other onclick() code not shown for brevity......
}
</script>
我需要将 Tweet 按钮中的“data-text”属性值动态更改为所选图像的名称。我添加了上面失败的javascript代码-从此处的代码中获得的“elem”:
var elem = document.getElementById("tweetBtnId");
是 null (我认为),因为上面 Twitter 推文按钮代码中的这一行:
if(!d.getElementById(id)){js=d.createElement(s); js.id=id;
我不确定,但看起来 Twitter Tweet 按钮默认脚本会覆盖任何向 Tweet 按钮添加“id”属性的尝试。
你会看到我在上面的 Tweet 按钮中添加了id="tweetBtnId",这样我就可以在上面的图像选择 onclick() 处理程序中访问 Tweet 按钮,然后将“数据文本”设置为刚刚选择的图像。
我只是怀疑 Twitter 的 Tweet 按钮的设计目标是“我们要让这个傻瓜变笨,我们只会让这些动物选择一个数据文本值——每个 Tweet 按钮都必须有一个硬编码,”一旦-on-the-page" data-text 属性 - 如果他们尝试动态更改 Tweet 按钮的 data-text 属性,他们就会开玩笑。"
我需要让它工作——有什么想法吗?