2012-01-12 4 views
2

だからアイデアはこれです。私はjsファイル内の配列とその配列からランダムな要素を参照する関数を持っています。私は、ボタンをクリックすることができ、スパン内のテキストが配列内のランダムな要素に変わりたいと思っています。 私はすでにこれを行う方法を持っています。私はidが "change_equivalently"のスパンを持っています。その後のJavaScriptファイルで、私はどのようにHTMLでjavascript関数を直接参照しますか?

var Equivalentlys = [ 
"Equivalently, ", 
"Alternatively, ", 
"Another way of saying this is that " 
]; 

$('#shuffle').click(function() { 
    var length = (Equivalentlys.length + 1); 

    var x = Math.floor(Math.random()*length); 

function Equivalently(i){ 
    return Equivalentlys[i]; 
}; 

$('#change_equivalently').text(Equivalently(x)); 

}); 

を持っている私の質問は、私はhtmlコードを書くとき、私は常にアップ時に単語を変更することができるようにするために

<span id = "change_equivalently"> ... </span> 

を書く必要があるということですボタンをクリックします。

しかし、私はもっと簡単な方法を望んでいます。 私はjavascript関数を参照することができるかどうかを確認するために

<var> Equivalently(1) </var> 

のようなものを試してみましたが、それはうまくいきませんでした。

どうすればこの問題に近づくことができますか?

答えて

3

まず、あなたが現在使っているアプローチは、よりも良いでしょう。あなたが望むものよりも優れています。これは、プレゼンテーションを機能から分離し、ベストプラクティスと広くみなされています。あなただけのことができるようにしたい場合は

<span onclick="doStuff()"> blarg </span> 

ただし、でき(しかし、私が言ったように、おそらくすべきではないは)あなたの要素がクリックされたときに呼び出されるコードが含まれます(PHPやそれに類するテンプレートシステムのように)HTMLに変わるJavaScriptコードを持っていると、JavaScriptでそれを行うことができなくなります。

最終的には、スパンを使用してコンテンツをマークし、スクリプト内にクリックイベントを追加するだけです。これは今のやり方です。これは意味的には最高です:htmlでは、あなたが言うことは、その特定の単語/位置が変更可能であることです。コードでがどのように変わるかをと指定します。

+0

確かに 'document.write'(http://javascript.about.com/library/blwrite.htm)はPHPのようにHTMLに変わるJavascriptを持つことができますか?とにかくこの方法ではいけないと言っても+1ですが。 :) – Chris

+1

[document.writeはなぜ「悪い練習」とみなされますか?](http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice) –

+0

ああ。まあ、私はPHPを知らないので、私は元々したことに固執します。それはどこにでもスパンを置くことは苦痛になるだろう。しかし、それはそれほど悪くないと思います。 –

1

これはどういう意味ですか?

<script type="text/javascript"> 
    Equivalently(1) 
</script> 
+0

そこにも 'document.write'はありませんか? – Chris

+0

私はhtmlでこれを試しましたが、うまくいきませんでした。 –

関連する問題