2012-03-13 2 views
0

Pourquoi cela provoque-t-il un 'Aw, Snap!' Erreur (comme un plugin a échoué, montrant un fichier avec un visage qui a les yeux barrés)?javascript demander en essayant de faire

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); 

il travaillait quand mon code était comme ceci:

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{} 

j'aurais pensé que demander si js peut faire quelque chose whilt d'essayer cela fonctionnerait et être plus rapide !? Je suis sûr que j'ai vu cela en php.

Est-ce quelque chose comme cela possible?

+6

meilleure autre déclaration jamais. – jbabey

+0

lol, homme drôle! –

+0

Vous ne verrez [aucune amélioration des performances] (http://jsperf.com/inline-if-is-pointless) en remplaçant '' replace'' dans la vérification conditionnelle. Je le déplacerais pour maximiser la lisibilité. –

Répondre

1

cette déclaration est toujours (*) vrai, que ce soit si le remplacement est effectué ou non:

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

Donc vous n'avez pas besoin d'un si pour ça. Cette autre déclaration PEUT être vraie:

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

en fonction de la valeur de la variable youtube. (*) Sauf si le paramètre replace() vous donne une chaîne vide lorsque @Chris Shouts est pointé.

+1

L'instruction 'vid = vid.replace ('http://www.youtube.com/watch?v=', '')' serait évaluée à false si 'vid' est une chaîne vide après le remplacement. Il ** ne ** pas toujours évaluer à vrai. –

+0

fidèle à cela!^_ ^ – Guumaster

-1

Cette ligne semble un peu étrange:

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

Êtes-vous un sens à attribuer la valeur vid.replace-vid ou tout simplement vérifier la valeur? La condition if ne semble pas produire une valeur claire Boolean.

Ainsi, dans ce cas, en essayant d'obtenir la condition if à la fois effectuer l'action et retourner un Boolean ne fonctionnera probablement pas pour vous parce que le nouveau code dans la condition ne retourne pas de base Boolean sur la l'exécution de l'action. (Techniquement, la condition ne retourner un Boolean, mais il ne se fonde pas sur le succès/échec de l'action replace.)

+0

Quoi? Que voulez-vous dire booléen? – NicoSantangelo

+0

@Nicosunshine - La condition dans l'instruction 'if' doit être résolue en' true' ou 'false'. Cette valeur "vrai/faux" est connue sous le nom de type "booléen". Comme il ne s'agit que d'un commentaire, je lierai la page [Wikipedia Boolean data type] (http://en.wikipedia.org/wiki/Boolean_data_type). – TLS

+0

cela signifie que votre nouvelle instruction if est TOUJOURS vraie. Et si cela est correct, vous n'avez pas besoin d'un IF du tout. – Guumaster

Questions connexes