ツイートボタンを表示するフォームの機能コードは次のとおりです。ボタンは複数の画像を表示するフォームにあります。ユーザーが画像の1つをクリックすると、その画像は「選択された」画像になり、ツイートボタンはツイートすることになっています。選択した画像の名前とURL:
<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()'ハンドラーがあります。ユーザーが画像の1つをクリックすると、そのdivのonclick()ハンドラーが呼び出され、その画像がページ上の「currentlySelectedImage」に設定されます。onclick()ハンドラーは、ツイートボタンの「data-text」を更新する必要があります。選択したばかりの画像の名前を持つ属性:
// 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>
ツイートボタンの「data-text」属性の値を、選択した画像の名前に動的に変更する必要があります。上記のjavascriptコードを追加しましたが、失敗します-ここのコードから取得した「elem」:
var elem = document.getElementById("tweetBtnId");
上記のTwitterツイートボタンコードのこの行のためにnull(私は思う)です:
if(!d.getElementById(id)){js=d.createElement(s); js.id=id;
よくわかりませんが、Twitterのツイートボタンのデフォルトスクリプトは、ツイートボタンに「id」属性を追加しようとすると上書きされるようです。
上のツイートボタンにid="tweetBtnId"を追加したので、上の画像選択onclick()ハンドラーのツイートボタンにアクセスできるようになり、「data-text」をの名前に設定したことがわかります。選択したばかりの画像。
Twitterのツイートボタンの設計目標が「この吸盤を馬鹿にするつもりだ。これらの動物に1つのデータテキスト値のみを選択させる。すべてのツイートボタンにはハードコードされたものが1つ必要だ」とは思えない。 -on-the-page"データテキスト属性-ツイートボタンのデータテキスト属性を動的に変更しようとすると、冗談を言います。"
これを機能させる必要があります-何かアイデアはありますか?