J'ai du mal à comprendre comment passer un <div id> à un autre javascript. Par exemple, au début de ma page, j'ai le script suivant qui crée une balise div id qui me permet de sélectionner et de modifier dynamiquement le contenu de la page.

  $(document).ready(function() {

      $("select").change(function() {
          var subFolder = $(this).val();
          $('#folderName').text(subFolder);
          $('#stats').attr('src', '/hardware/' + subFolder + '/stats/usage.txt');
          $('#hostInfo').attr('src', '/hardware/' + subFolder + '/stats/host.txt');
          $('#folderContent').show();
      });

      $.ajax({
          url: 'getFolders.php',
       type: 'GET',
       dataType: 'json',
       success: function(json) {
            var $selectBox = $('#folderList');
            $.each(json, function(i, value) { 
              $selectBox.append($('<option>').text(value).attr('value', value));
            });
            $selectBox.change();
          }
      });

  });

Cela me permet de faire ce qui suit - cela crée un sélecteur qu'un dossier particulier peut être sélectionné.

<div class="hidden-print">
<select id='folderList'></select>
</div>

Lorsque la liste des dossiers est sélectionnée ci-dessus, cela me permet de modifier le contenu comme les éléments ci-dessous:

Comme ci-dessus à un autre javascript.

$(document).ready(function() {
$('#example3').DataTable( {

    "processing": true,
    "ajax": {
        "url" : "../../reports/drives.txt",
        "dataSrc" : ""
    },  
    "columns": [
        { "data": "Hostname.Name" },
        { "data": "Name"}
    ]
} );
} );

Lorsque je sélectionne un dossier ci-dessus dans le sélecteur, je souhaite que le dossier sous l'URL sous l'AJAX soit modifié avec lui pour le mettre à jour.

MISE À JOUR

Après avoir examiné cela un peu plus loin, je ne pense pas que mon explication corresponde très bien.

  $(document).ready(function() {
      $("select").change(function() {
          var subFolder = $(this).val();
     $('#folderName').text(subFolder);
          $('#folderLogo').attr('src', '/server/' + subFolder + '/Logo/hardware.png');
          $('#folderContent').show();
      });

      $.ajax({
          url: 'getFolders.php',
       type: 'GET',
       dataType: 'json',
       success: function(json) {
            var $selectBox = $('#folderList');
            $.each(json, function(i, value) { 
              $selectBox.append($('<option>').text(value).attr('value', value));
            });
            $selectBox.change();
          }
      });

  });
var thisId = $('folderList').attr('id');

Je veux prendre cette variable qui devrait être un seul dossier et l'utiliser sur un script comme celui ci-dessous.

var subFolder = $(this).val();
     $('#folderName').text(subFolder);
          $('#folderLogo').attr('src', '/server/' + subFolder + '/Logo/hardware.png');

Je voudrais prendre le "sous-dossier" et l'utiliser quelque chose comme ceci:

$(document).ready(function() {
$('#example3').DataTable( {

    "processing": true,
    "ajax": {
        "url" : "/server/" +  subfolder + "/Stats/Map.txt",
        "dataSrc" : ""
    },  
    "columns": [
        { "data": "Hostname.Name" },
        { "data": "Name"}
    ]
} );
} );

J'ai essayé d'obtenir la méthode ci-dessous pour obtenir une conversion de div id et il n'a pas de données lorsque je l'essaie de cette façon. J'aurais dû dire que je veux utiliser la variable dans le sous-dossier du script ci-dessus ... J'ai essayé un nom window.variable j'ai essayé la variable globale et toujours rien ne semble fonctionner correctement. Je suppose que la façon dont la variable est traitée ne se répercute pas.

0
Jared 7 mars 2016 à 09:39

3 réponses

Meilleure réponse

Vous pouvez accéder à l'ID à l'aide de $('#folderList').attr('id').

Attribuez-le à une variable et transférez-le dans votre fonction. Si vous chargez un script séparé à l'aide de $ (document) .ready (), il peut ne pas être disponible sauf s'il s'agit d'une variable globale.

Quelque chose comme ça pourrait faire l'affaire pour vous.

var thisId = $('#folderList').attr('id');
$(document).ready(function() {
    $('#'+thisId).append('whatever');
} );
2
tempranova 7 mars 2016 à 07:10

Vous pouvez également le passer dans la fonction jQuery en utilisant window.variable = value qui sera considéré comme une variable globale pour cet objet fenêtre.

0
Mithun Shreevatsa 7 mars 2016 à 06:50

Avec votre aide, j'ai pu diagnostiquer et trouver le problème. Lorsque la variable est en dehors de la fonction, elle ne s'exécute pas. En l'ajoutant à la fonction document.ready, il conservera la variable malgré les modifications de la liste déroulante. Puis constatant cela parce qu'il y a plusieurs initialisations de la structure des tables de données - je dois ajouter le drapeau "destroy" = true. Cela détruit les anciennes tables de données et permet d'en créer une nouvelle après avoir modifié le dossier.

 $(document).ready(function() {
      $("select").change(function() {
          var subFolder = $(this).val();
          $('#folderName').text(subFolder);
          $('#folderLogo').attr('src', '/hardware/' + subFolder + '/Logo/hardware.png');
          $('#hdstats').attr('src', '/hardware/' + subFolder + '/hdstats/hdstats.csv');
          $('#folderContent').show();



$('#example3').DataTable( {
    "destroy": true,
    "processing": true,
    "ajax": {
        "url" : "/hardware/" +  subFolder + "/hdstats/stats.txt",
        "dataSrc" : ""
    },  
    "columns": [
        { "data": "Hostname.Name" },
        { "data": "Name"}
    ]
} );
   });

      $.ajax({
          url: 'getFolders.php',
       type: 'GET',
       dataType: 'json',
       success: function(json) {
            var $selectBox = $('#folderList');
            $.each(json, function(i, value) { 
              $selectBox.append($('<option>').text(value).attr('value', value));
            });
            $selectBox.change();
          }
      });

  });
0
Jared 7 mars 2016 à 20:25