2012-03-13 14 views
0

これはなぜ「ああ、スナップ!エラー(プラグインが失敗したように、目が横切っている顔のファイルを表示しています)?javascriptを試してみてください

var vid; 
var youtube; 
var youtube1='<object style="margin:5px;height:175px; width:235px"><param name="movie" value="'; 
var youtube2='"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="'; 
var youtube3='" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" height="175" width="235"></object>'; 



if(vid=vid.replace('http://www.youtube.com/watch?v=','')){ 
    vid=vid.slice(0,11); 
    vid='http://www.youtube.com/v/'+vid+'?version=3&feature=player_detailpage&autohide=1'; 
}else{} 
youtube=youtube1+vid+youtube2+vid+youtube3; 
$('#TV').html(youtube); 

私のコードはそうのようだったとき、それが動作するために使用:

if(youtube.search('http://www.youtube.com/v/')== -1){ 
    vid=vid.replace('http://www.youtube.com/watch?v=',''); 
    vid='http://www.youtube.com/v/'+vid+'?version=3&feature=player_detailpage&autohide=1'; 
    }else{} 

私はJSはそれが仕事と速くなり試みるwhilt何かを行うことができますかどうかを尋ねると思っているだろう!私はこれがPHPで行われていると確信しています。

これは可能でしょうか?

+6

これまでにない最高の声明。 – jbabey

+0

笑、面白い男! –

+0

条件チェックの中で 'replace'を実行することで、パフォーマンスの向上は見られません(http://jsperf.com/inline-if-is-pointless)。私は可読性を最大限にするためにそれを移動します。 –

答えて

1

この文は常に(*)真で、いずれかの交換が行われているかどうか:

vid=vid.replace('http://www.youtube.com/watch?v=','') 

そうするためには、ifは必要ありません。この他のステートメントはtrueであるかもしれません:

youtube.search('http://www.youtube.com/v/')== -1 

可変YouTubeの値によって異なります。

(*)replace()が@Chris Shoutsが指すように空の文字列を与える場合を除いて、

+1

'vid = vid.replace( 'http://www.youtube.com/watch?v='、 '')ステートメントは、置換後に' vid'が空の文字列であればfalseと評価されます。 **は常に真と評価されません**。 –

+0

それに当てはまる!^_ ^ – Guumaster

-1

この行は少し奇妙に見える:

if(vid=vid.replace('http://www.youtube.com/watch?v=','')){ 

はあなたが vidvid.replaceから値を割り当てるか、単に値をチェック に意味していますか? ifの条件では、明確なBoolean値が生成されないようです。だから、

、この場合には、両方にif条件を取得しようとすると、アクションを行い、状態で新しいコードはに基づいてBooleanを返さないためBooleanはおそらくあなたのために動作しません戻りますアクションの実行。 (技術的には、条件リターンBooleanを行いますが、それはreplaceアクションの成功/失敗に基づいていない。)

+0

何ですか? ブール値はどういう意味ですか? – NicoSantangelo

+0

@ニコサンシャイン - 'if'ステートメントの条件は、' true'または 'false'のいずれかに解決されなければなりません。この「真偽」値は、「ブール型」型として知られている。これは単なるコメントなので、[Wikipedia Boolean data type](http://en.wikipedia.org/wiki/Boolean_data_type)ページにリンクします。 – TLS

+0

新しいif文が常に真であることを意味します。それが正しければ、IFはまったく必要ありません。 – Guumaster