2016-06-22 7 views
1

編集者が印刷時にページからいくつかの要素(この場合はジョブ名)を非表示にすることができる小さなアプリケーションを構築しようとしています。PHPからjavascriptにIDとして渡す変数

しかし、私はaddclassを正しく動作させることができません。何もしないか、すべてのチェックボックスにクラスを追加します。

私のチェックボックスに一意のIDを与えるために、私はPHPのIDとしてジョブ名を使用しています。これらはデータベースから来ます。 入力:

<input type='checkbox' id='".$row['name']"'/><div class='tohide ".$row['name']."'>".$row['name']."</div> 

Javascriptを:

var src = <?php echo json_encode($row['name']); ?>; 
    $('input#src').change(function(){ 
    if(this.checked){ 
     $('.tohide').addClass('bold noprint'); 
    }else{ 
     $('.tohide').removeClass('bold noprint'); 
    } 
    }) 

私は<?php echo json_encode($row['name']); ?><?php echo $row['name']; ?>はどんな結果が得られていないことに気づきました。私はPHP内で同じ$row['name']を使用して、チェックボックスに適切なIDを生成しています。

クライアント側コード:

<script type="text/javascript"> 
     var src = ""; 
     $('input#'+ src).change(function(){ 
     if(this.checked){ 
      $('.tohide').addClass('bold noprint'); 
     } 
     else { 
      $('.tohide').removeClass('bold noprint'); 
     } 
     }) 
    </script> 

json_encodeを使用して、私はこれは単なる文字列でヌル

+0

この結果生成されるクライアントサイドコードは何ですか? – David

答えて

1

をすべてchecboxesが変更理由の問題はこれです:

$('.tohide').removeClass('bold noprint'); 

あなたのすべてのチェックボックスが表現「.tohide」と一致します。

あなたは代わりに$('.tohide.'+this.id).removeClass('bold noprint')をします。

免責事項:有効なHTMLを提供していないため、HTML/JSの質問ですので、テストしません。 PHPの部分は無関係です。

+0

このチェックボックスをオンにすると、チェックボックスは非表示になりますが、その横の値は非表示になります。 –

+0

ああ、そうです、あなたは正しいです。私の悪い。あなたはおそらく.siblings()メソッドを使いたいでしょう。 –

+0

それはそうしました。私はそれを選択することができますので、それを答えに追加してください。 –

2

の値を取得する実行します。変数名を補間するつもりはない

'input#src' 

文字列内では、文字通りの文字列です。

'input#' + src 

を私もこれは正しくない可能性があること疑わしい

var src = <?php echo json_encode($row['name']); ?>; 

をあなたはが本当に実際のクライアント側になりますけれども、それを連結し、src変数を使用するには確認するコード。しかし、値が単なる文字列の場合は、json_encodeが必要であるとは思わないでしょう。しかし、あなたは間違いなく、文字列の周り引用符必要があるでしょう:

var src = '<?php echo $row['name']; ?>'; 
+0

ありがとう@ダビッド。しかし、私はUncaught Errorを受け取りました:構文エラー、認識できない式:input# –

+0

@ Concrete-Cowboy:あなたがどこかでエラーを起こしたように聞こえます。おそらく文字列の間違いを引用する可能性があります。そのエラーを生成するコードは何ですか? – David

+0

javacriptの完全なコード: var src = '<?php echo $ row [' name ']; ?> '; $( 'input#' + src).change(function(){ if(this。チェックしてください){ $( 'tohide')。addClass( 'bold noprint'); } else { $( 'tohide')。removeClass( 'bold noprint'); } } –

関連する問題