2011-07-22 11 views
-2

hrefからjavascript関数を呼び出そうとしています。関数にはeval関数によって取り出されるパラメータがあります。しかし、何らかのエラーが発生します。hrefを使用してパラメータ付きのjavascript関数を呼び出す

スクリプト:

function rate(id) { 

      // do something 
     } 

関数を呼び出しますタグ:

<a href="javascript:rate(" + <%#Eval("ID")%> + ")" >rate</a> 

は、私が何をしないのですか?

+1

どのようなエラーがありますか?生成されたJSではなくJSを生成するサーバーサイドコードをなぜ表示していますか?なぜあなたは[漸進的な強化](http://icant.co.uk/articles/pragmatic-progressive-enhancement/)を使っていないのですか? – Quentin

+1

あなたはどんなエラーを受けていますか? – JAAulde

+1

スクリプトが実行する<%#Eval( "ID")%> –

答えて

6

あなたはこのようにそれをやってはいけませんが、あなたは反対現在アップしている問題はおそらくされていますあなたの引用/連結。 <%#Eval("ID")%>は、単にINTを生成する場合

、これは動作するはずです:

<a href="javascript:rate(<%#Eval("ID")%>)" >rate</a> 

を、それが文字列なら、

<a href="javascript:rate('<%#Eval("ID")%>')" >rate</a> 

あなたが生産<%#Eval("ID")%>のケースを処理する必要があるが、あなたのためにそれを行う必要があります一重引用符で囲まれたもの

レッスン:

私はjavascriptの擬似プロトコル(javascript:)が現存しないと不適切であるので、あなたがこのようにそれをやってはならないと言います。最悪の場合は、onclickを使用してfalseを返します。理想的には、イベントをプログラマチックに割り当て、イベントオブジェクトのデフォルトアクションを防止することができます。

+0

私はそれをプログラム的にやりたかったのですが、レート関数がjquery関数(ダイアログウィンドウ用のプラグイン)を呼び出すという問題に直面しました。それで、あなたが提案する別の方法がありますか? – Roobah

4

それだけの数に置き換えられますので、あなたは、" + + "を使用しないでください。

<a href="javascript:rate(<%#Eval("ID")%>)">rate</a> 
+0

感謝しました。 – Roobah

3

なぜそれをhrefと呼びますか?ボタンを作ってリンクのようにスタイルを変えることができます。それははるかに簡単になるでしょう

<button id = "myButton" onclick = "rate(<%#Eval("ID")%>)" >rate</button> 

#myButton 
{ 
    border: none; 
    padding: none; 
    background-color: transparent; 
} 
+0

私はそれを使用します。ありがとう – Roobah

1

私はeval()の使用を全く必要としません。このような引用符で囲まれたコードは、トップレベルのスコープで評価されます。

var ID = 3; 

function rate(id) { 
    alert(id); 
    return(false); 
} 

あなたが見ることができます:

<a href="#" onclick="rate(ID);">rate</a> 

と、このコード:あなたはレートとIDの両方がそのトップレベルのスコープで定義されていることを確認した場合、それは、このHTMLとはeval()なしで動作しますそれはここで働く:http://jsfiddle.net/jfriend00/bqqpM/。評価なしでこの作業を行うには、トップレベルのスコープでIDとレートの両方を使用できることを確認するだけです。

+0

私はevalを使用しています、なぜなら、aタグはリピータの中にあるからです。これがどの行であるかを指定するには、evalを使用する必要があります。 – Roobah

+0

OK、実際のページのHTMLの代表的なサンプルは、次回は良いでしょう、そして私たちはあなたが解決しようとしている全体的な問題を知っています。 – jfriend00

関連する問題