2016-06-20 17 views
0

私は列と行を持つテーブルを持っていて、セルにはonclickハンドラがあります。* this *オブジェクトを模倣しようとしましたが、動作しません。

<tr name="row1"> 
    <td name="col1" onclick="f1(this)"> 
    <td name="col2" onclick="f1(this)"> 
    <td name="col3" onclick="f1(this)"> 
</tr> 

機能f1は、ユーザーが選択したセルにマークを付けます。これはすべて期待どおりに機能しています。ユーザーが選択内容を保存してフォームに戻ると、ユーザーが保存した正しいセルを事前に選択できるという機能を追加しようとしています。だから私はrowcolの値で呼び出すことができるこの関数をデータベースから書きました。

function f2 (row, col) { 
    f1($('tr[name=row'+row+']').find('td[name=col'+col+']')); 
} 

しか動作しません。たとえば、

f1($('tr[name=row1]').find('td[name=col2]')[0]) 

のように完全な文字列を作成すると、うまく動作します。しかし、それはページでは機能しません、私はそれがパラメータの誤った引用と関係があると思いますが、私は正しく進める方法を理解することはできません。 f1へのプログラムによる呼び出しを作成するにはどうすればよいですか?

+0

あなたのパラメータは何ですか?なぜあなたは[[0] 'を追加しましたか? –

+0

はデータベース数値から来る行/列ですか?もしそうなら、あなたはまだそれらに "行"と "col"という接頭語を付ける必要があります。関数 'f2'には閉じ括弧がありません。 – trincot

+0

明確にするためにOPを編集しています - 'name = '+ row'は本当に' name = row' + row'だったはずです。 –

答えて

0
<!doctype html> 
<html lang="de"> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>Titel</title> 
    <script> 
     function f2 (self) { 
      var col = self.attributes["name"].value; 
      var row = self.parentNode.attributes["name"].value; 
      alert(row + " " + col); 
      // do what you want 
     } 
    </script> 
    </head> 
    <body> 
    <table> 
     <tr name="row1"> 
      <td name="col1" onclick="f2(this);">test1</td> 
      <td name="col2" onclick="f2(this);">test2</td> 
      <td name="col3" onclick="f2(this);">test3</td> 
     </tr> 
    </table> 
    </body> 
</html> 
+0

名前の代わりにIDを使うことができない理由は、一意性制約のために、名前ではなく、IDで行うことができるcol1のすべてを見ることができるようにする必要があります。 –

+0

@EddieRowe上記の答えに変更を加えたので、 'name'を使うことができます –

関連する問題