1

私はコードを持っています(ブラッド・クリスティーの提案の後、編集されました):

drupal_add_js('

jQuery(document).ready(function(){ 

jQuery("#selFinishes option").each(function(index) {
if (jQuery(this).val() == ' . $filter_color . ') {
jQuery(this).attr("selected","selected")
}   
})

});
', "inline");

そして、選択された値に「選択された」属性($filter_colorがPHP経由で追加されます)を正常に追加します。しかし、次のように複数の選択フィールドをターゲットにすると:

   drupal_add_js('

jQuery(document).ready(function(){ 

jQuery("#selFinishes option").each(function(index) {
if (jQuery(this).val() == ' . $filter_color . ') {
jQuery(this).attr("selected","selected")
}   
})

 jQuery("#selThemes option").each(function(index) {
if (jQuery(this).val() == ' . $filter_theme . ') {
jQuery(this).attr("selected","selected")
}   
})

});
', "inline");

両方のループが機能しません!

ヒントをありがとう!

4

2 に答える 2

2

上記のコードは明らかに JavaScript と php が混在していますが、何が問題なのかはわかりません。結果の JavaScript コードが意図したものであるかどうかを (ブラウザーでソースを表示して) 確認する必要があります。可能であれば、結果の JavaScript をここに投稿してください。

于 2012-09-11T15:05:37.150 に答える
1

私の経験に基づいた推測では、結果の JavaScript は出力時に無効であるということです。変数名 ( $filter_color& $filter_theme) から推測すると、そのうちの 1 つ (または両方) が文字列である可能性が高く、テストif (...val() == string)が失敗し、JavaScript のブロック全体が構文エラーになり、完全に失敗します。

値を文字列で囲むように出力を変更してみてください (次のようなものかもしれません)。

[snip].val() == "' . $filter_theme . '") {[/snip]

PHP 連結の前後に、変数の両側に二重引用符を追加したことに注意してください。これにより、構文が修正され、インターンが再び機能するようになります。

繰り返しますが、あなたの質問には情報が少なすぎますが、これが解決策の私の推測です

于 2012-09-11T15:13:36.563 に答える