我正在嘗試將幾個 div 標簽的名稱和高度存盤在一個物件中以供以后使用。我試圖通過查找具有“隱藏”類的 div 來做到這一點,然后在 .each 回圈中注冊它們的名稱和高度。然而,當我嘗試我的代碼時,我會得到相同的 div 標簽的名稱和值重復多次,或者我只會得到物件的初始值。
var heightMap = {name:'x',value:'y'};
function setHeightMap() {
$( ".hidden" ).each(function() {
$setName = $( this ).attr('id');
$setValue = $( this ).height();
});
$heightMap.push({'name':$setName, 'value':$setValue});
};
console.log(heightMap);
uj5u.com熱心網友回復:
使用該map函式回圈遍歷所有具有 CSS 類的元素,并為每個元素.hidden回傳一個帶有 和 的物件。結果將是帶有物件的陣列。namevalue
var heightMap = $(".hidden").map((index, element) => {
const $element = $(element);
const name = $element.attr('id');
const value = $element.height();
return ({ name, value });
});
uj5u.com熱心網友回復:
考慮以下。
$(function() {
var heightMap = [];
function setHeightMap() {
$(".hidden").each(function(i, el) {
heightMap.push({
name: $(el).attr("id"),
height: $(el).height()
});
});
};
setHeightMap();
console.log(heightMap);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<div class="hidden" style="width: 20px; height: 30px;" id="obj-1"></div>
<div class="hidden" style="width: 30px; height: 60px;" id="obj-2"></div>
<div class="hidden" style="width: 40px; height: 120px;" id="obj-3"></div>
<div class="hidden" style="width: 50px; height: 240px;" id="obj-4"></div>
</div>
您不能.push()在物件上使用。您需要將其設定為一個陣列,然后您可以將物件推入其中。
您將希望.push()在每個回圈中使用。
uj5u.com熱心網友回復:
您必須將值推入each回圈內。
原始代碼僅添加了一個高度描述符物件:基于上一次迭代的值的高度描述符物件。
而且 ...
heightMap應該是一個陣列heightMap并且$heightMap是不同的物體!setHeightMap必須實際呼叫該函式。
修正版:
var heightMap = [{name:'x',value:'y'}];
function setHeightMap() {
$( ".hidden" ).each(function() {
$setName = $( this ).attr('id');
$setValue = $( this ).height();
// Must be called inside the loop !
heightMap.push({'name':$setName, 'value':$setValue});
});
};
console.log(heightMap);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/495072.html
標籤:javascript jQuery
