将javascript属性传递给javascript函数

时间:2016-03-07 06:39:20

标签: javascript jquery html json ajax

我正在努力弄清楚如何将<div id>传递给另一个javascript。例如,在我的页面的开头,我有以下脚本,它创建一个div id标签,允许我动态选择和更改页面的内容。

  $(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();
          }
      });

  });

这允许我执行以下操作 - 这将创建一个选择器,可以选择特定的文件夹。

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

当选择上面的文件夹列表时,它允许我更改以下项目的内容:                                           

像上面的另一个java脚本一样。

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

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

当我从选择器中选择上面的文件夹时,我希望修改AJAX下的URL下的文件夹以进行更新。

更新

在进一步研究之后,我不认为我的解释非常合适。

  $(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');

我想接受这个应该是单个文件夹的变量,并在下面的脚本中使用它。

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

我想采用&#34;子文件夹&#34;并使用类似下面的内容:

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

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

我尝试使用下面的方法来获得div id转换,当我尝试这种方式时,它没有任何数据。我应该说我想在上面的脚本中使用子文件夹中的变量...我尝试了一个window.variable名称我已经尝试了全局变量,但似乎仍然没有正常工作。我的猜测是,处理变量的方式并未延续。

3 个答案:

答案 0 :(得分:2)

您可以使用$('#folderList').attr('id')访问ID。

将其分配给变量并将其传递给您的函数。如果使用$(document).ready()加载单独的脚本,除非它是全局变量,否则它可能不可用。

这样的事情可能对你有用。

var thisId = $('#folderList').attr('id');
$(document).ready(function() {
    $('#'+thisId).append('whatever');
} );

答案 1 :(得分:0)

你也可以使用window.variable = value在jQuery函数中传递它,它将被视为该窗口对象的全局变量。

答案 2 :(得分:0)

在您的帮助下,我能够诊断并找到问题。当变量在函数之外时,它不会运行。通过将其添加到document.ready函数中,它将通过更改下拉列表来保留变量。然后发现因为数据表结构有多个初始化 - 我必须添加“destroy”flag = true。这会破坏旧的数据表,并允许在更改文件夹后创建新的数据表。

 $(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();
          }
      });

  });