2011-07-15 12 views
-1

は、ここでは、コードです:Javascriptエラー:不足:プロパティIDの後に?

window.onload({ 
    var Country = '<?= $core->HotelData($hid, "country"); ?>'; 
    var options = document.getElementsByTagName('option'); 
    for (var i = 0; i < inputs.length; i ++) { 
     if (options[i].type == 'option' && options[i].value == Country) { 
      options[i].attr('selected','selected'); 
     } 
    } 
}); 

私は今、時間これで苦労してきた、と私は専門家からのアドバイスを求めた場合、それは良くなるはずと考えました。

UPDATE:ソース

window.onload({ 
    var Country = 'United Kingdom'; 
    var options = document.getElementsByTagName('option'); 
    for (var i = 0; i < inputs.length; i ++) { 
     if (options[i].type == 'option' && options[i].value == Country) { 
      options[i].attr('selected','selected'); 
     } 
    } 
}); 

UPDATE#2:あなただけの、window.onloadにJSONオブジェクトを渡している

function OnLoad() { 
    var Country = "<?= $core->HotelData($hid, "country"); ?>"; 
    var options = document.getElementsByTagName('option'); 
    for (var i = 0; i < options.length; i ++) { 
     if (options[i].value == Country) { 
      options[i].selected = true; 
     } 
    } 
} 

window.onload = OnLoad(); 
+0

あなたは今まであなたのPHPスクリプトが生成するソースコードをチェックしましたか? '' HotelData($ hid、 "country"); ?> ''は、一重引用符を含む文字列があるとすぐに中断します。 – Tomalak

+0

@Tomalak PHPはうまくいきます。@Everyone else window.onload = function(){...}、window.onload = function(){ ...};そしてそれ以外のバリエーションはすべて動作しません。 –

+1

あなたの修正は 'OnLoad'関数が定義されている場所(' load'ではなく)で関数の戻り値( 'undefined'になります)を' window.onload'に代入するだけで、有用な何かをして、省略することができます。 – sth

答えて

1

ktnxbai ..問題の原因は、ほとんど私の愚かだった を修正しましたイベントではなく、関数です。また、jqueryオブジェクトを使用せずにjqueryのような構文を使用しようとしています。

window.onload(function(){ 
    var Country = '<?= $core->HotelData($hid, "country"); ?>'; 
    var options = document.getElementsByTagName('option'); 
    for (var i = 0; i < inputs.length; i ++) { 
     if (options[i].type == 'option' && options[i].value == Country) { 
      options[i].attr('selected','selected'); 
     } 
    } 
}); 

ただし、あなたがwindowオブジェクト上loadイベントをリッスンする必要があり、ないトリガー1:ここでは

+2

javascriptオブジェクトです。 – davin

2

は、あなたがエラーを修正する方法です。このように、正しい構文は次のようになります。

window.onload = function(){ 
    var Country = '<?= $core->HotelData($hid, "country"); ?>'; 
    var options = document.getElementsByTagName('option'); 
    for (var i = 0; i < inputs.length; i ++) { 
     if (options[i].type == 'option' && options[i].value == Country) { 
      options[i].attr('selected','selected'); 
     } 
    } 
}; 

OR

jQuerified:

$(window).load(function(){ 
    var Country = '<?= $core->HotelData($hid, "country"); ?>'; 
    $('select option[value="'+Country+'"]').attr('selected', 'selected'); 
}); 
+1

これは、関数を引数として受け取るonloadイベントを発生させます。私はこれがジョージがやろうとしていたものだとは思わない... – DanC

+0

差を見逃した場合(3回読んで読んでみた)、彼は開いたブレースの前に 'function()'を追加した。これはJSがあなたがオブジェクトではなく関数の内容を定義していることを知るために必要です。 – Herms

+0

@DanC:なぜそれを考えるのですか?彼はそこでデフォルト値を選択しようとしていますが、なぜ彼が望むものではないでしょうか? – Shef

4

おそらく、書くためのもの:

window.onload = function() { 
    ... 
}; 
+0

これは動作しません... –

+1

@George:エラーメッセージは何ですか/ ...? – sth

0

あなたがやってみてください:

window.onload = function(){ 
    ... 
}; 
0

onLoadに関数を渡し、この

window.onload = function(){ 
    var Country = '<?= $core->HotelData($hid, "country"); ?>'; 
    var options = document.getElementsByTagName('option'); 
    for (var i = 0; i < inputs.length; i ++) { 
     if (options[i].value == Country) { 
      options[i].selected = true; 
     } 
    } 
}; 
0
  1. を試してみてください。
  2. forループを修正しました。
  3. attrコールを修正しました。

であるべき:

window.onload = function() { 
    var Country = '<?= $core->HotelData($hid, "country"); ?>'; 
    var options = document.getElementsByTagName('option'); 

    for (var i = options.length - 1; i >= 0; --i) { 
     if (options[i].type == 'option' && options[i].value == Country) { 
      $(options[i]).attr('selected','selected'); 
     } 
    } 
} 
関連する問題