2016-03-07 240 views
0

我正在努力弄清楚如何將<div id>傳遞給另一個javascript。例如,在我的頁面開始處,我有以下腳本,它創建了一個div id標籤,允許我動態選擇和更改頁面內容。將javascript屬性傳遞給javascript函數

$(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下的文件夾與它一起修改以更新它。

UPDATE

看着這個遠一點,我不認爲我的解釋適應得很好了。

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

我想採取「子文件夾」,並使用它像下面的內容:

$(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名我已經嘗試了全局變量,但仍然沒有任何東西似乎工作正常。我的猜測是變量正在處理的方式並沒有結束。

+0

如果JS腳本駐留在你可以添加一個全局變量的ID相同的文件夾,這是其他js文件 – Sherlock

回答

2

您可以使用$('#folderList').attr('id')訪問該ID。

將其分配給一個變量並將其傳遞給你的函數。如果使用$(document).ready()加載單獨的腳本,則它可能無法使用,除非它是全局變量。

像這樣的東西可能會爲你做的伎倆。

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

訪問我有點困惑在哪裏,你想補充一點?在第一個腳本獲取文件夾列表之前...現在我可以得到路徑中的thisId,但它顯示沒有可用的東西。 http://127.0.0.1/hardware/undefined/reports/DatastoreMap.txt?_=1457334253884加載資源失敗:服務器響應狀態爲404(未找到) – Jared

+0

爲代碼添加了一點修正。也許這對你有幫助? https://jsbin.com/lakoyon/edit?html,output – tempranova

+0

我仍然無法得到這個工作 - 當我嘗試你放在一起的jsbin - 它不斷顯示文件夾列表的未定義值。它不會拋出除未指定狀態的URL之外的錯誤。 – Jared

0

你也可以通過它使用window.variable = value,將被視爲該窗口對象的全局變量jQuery函數裏面。

0

在您的幫助下,我能夠診斷並發現問題。當變量不在函數之外時,它不運行。通過將其添加到document.ready函數中,它將通過更改下拉列表來保持變量。然後發現,因爲有多個數據表結構的初始化 - 我必須添加「銷燬」標誌=真。這會破壞舊的數據表並允許在更改文件夾後創建新數據表。

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

    });