2010-09-21 2 views
0

que j'ai une ligne de table avec les deux zones de texte et je veux les manipuler en fonction des écrans et des valeurs tableauPetite confusion de programmation concernant si d'autre et d'autre si jquery

      <tr id ="myrow" style="display:none"> 
    <td> 
     test1<input type="text" name="some" value ="some"> 
     test2<input type="text" name="test2" value ="test2"> 
    </td> 
    </tr> 

J'utilise le même forme pour tous les écrans sous forme .même est rENDUES pour tous les écrans de sorte iam ayant une iam valeur cachée manipuler les choses sur la base cachée

var somearr = ['AAA','BBB','CCC','DDD']; 
    //ready function 
    if ($("#hi_showelements").attr('value')=="screen1"){ 
     $("#firsttd").removeAttr('style'); //we have the td but not shown above 

    } 
    else if($("#hi_showelements").attr('value')=="screen2"){ 
    $("#myrow").hide(); 

    else if($("#hi_showelements").attr('value')=="screen3"){ 
     $("#myrow").hide(); 

    } 
    else if ($("#hi_showelements").attr('value')=="screen4"){ 
    $("#myrow").hide(); 

    } 

    if($.inArray(somecode,somearr)=='-1'){ 
    $("#myrow").hide(); 

    } 
    else{ 
    $("#myrow").show(); 
    } 

la ligne ci-dessus « myrow » est bien caché dans le scrren1, screen2, screen3, screen4,. Mais mon problème est que je ne peux pas cacher la ligne dans les mêmes écrans
disons si la valeur de "somecode" est "AAA" qui est présent dans le tableau "somearr" et qui n'est pas égal à "-1" et le "#" myrow "est montré. Comment puis-je cacher cette ligne si le "somecode" est présent dans le "somearr"

+1

Il vous manque une accolade fermante après le premier appel 'hide'. – sje397

+3

Combien de fois faut-il le dire: 'jQuery' n'est pas * un * langage, c'est simplement un framework construit au dessus de JavaScript. –

+0

@ sje397: Peut-être Type Erreur. Dans mon code iam l'avoir correctement – Someone

Répondre

1

Ce que vous essayez de faire devrait déjà fonctionner. Si ce n'est pas le cas, vous devez d'abord nettoyer votre code afin qu'il soit plus facile de détecter les erreurs.

D'abord, je vous suggère de remplacer le premier groupe de if déclarations avec un switch:

switch ($("#hi_showelements").attr('value')) { 
    case 'screen1': 
    $("#firsttd").removeAttr('style'); 
    break; 

    case 'screen2': 
    case 'screen3': 
    case 'screen4': 
    $("#myrow").hide(); 
    break; 
} 

Ensuite, inArray retourne un entier, pas une chaîne. Juste parce que JavaScript vous permet de comparer des chaînes avec des entiers ne signifie pas que c'est une bonne idée. Utilisez quelque chose comme ceci:

if($.inArray(somecode,somearr) == -1) 
    $("#myrow").hide(); 
else 
    $("#myrow").show(); 

Si cela ne fonctionne toujours pas, peut-être somecode n'est pas réglé correctement. Nous aurions besoin de voir où vous le définissez.