你能帮助理解为什么它不起作用并帮助它发挥作用吗?
我正在尝试计算动态添加/放置到DIV元素的所有子元素的总高度,代码不起作用[即儿童元素的数量每次都会有所不同]。当我在console.log()上检查返回的值时,代码返回初始定义的值为零。
以下是代码和打印屏幕:
//This is the code that dynamically extracts data every second from the server and populates it into to DIV element.
setInterval(function() {
google.script.run.withSuccessHandler(function(data) {
var temp3 = '';
for (var i = 0; i < data.length; i++) {
temp3 += '<p>' + data[i].join() + '</p>';
}
document.getElementById("item1").innerHTML = temp3;
}).getReadyLine();
}, 1000);
//This is the code that should calculate the total height of all the children elements of DIV element. But it is not working, not calculating, it displays 0 on the console.log().
var outerHeight1 = 0;
$("#item1").children().each(function() {
outerHeight1 += $(this).outerHeight();
});
</script>
//This is the code for DIV.
<div class="item1" id="item1">
PS
Update: included the code inside setInerval like this:
<script>
$( document ).ready(function () {
setInterval(function() {
google.script.run.withSuccessHandler(function(data) {
var temp3 = '';
for (var i = 0; i < data.length; i++) {
temp3 += '<p>' + data[i] + '</p>';
}
document.getElementById("item1").innerHTML = temp3;
}).getReadyLine();
var outerHeight1 = 0;
$("#item1").children().each(function() {
outerHeight1 += $(this).outerHeight(true);
return outerHeight1;
});
console.log(outerHeight1);
}, 1000);
/*
var outerHeight1 = 0;
$("#item1").children().each(function() {
outerHeight1 += $(this).outerHeight();
}); */
var outerHeight2 = 0;
$("#item2").children().each(function() {
outerHeight2 += $(this).outerHeight(true);
})
$("#item1").animate({
scrollTop: outerHeight1
}, 10000);
setTimeout(function() {
$("#item1").animate({
scrollTop: 0
}, 10000);
}, 3000);
setInterval(function() {
// 4000 - it will take 4 secound in total from the top of the page to the bottom
$("#item1").animate({
scrollTop: outerHeight1
}, 10000);
setTimeout(function() {
$("#item1").animate({
scrollTop: 0
}, 10000);
}, 4000);
}, 4000);
$("#item2").animate({
scrollTop: outerHeight2
}, 8000);
setTimeout(function() {
$("#item2").animate({
scrollTop: 0
}, 8000);
}, 8000);
setInterval(function() {
// 4000 - it will take 4 secound in total from the top of the page to the bottom
$("#item2").animate({
scrollTop: outerHeight2
}, 8000);
setTimeout(function() {
$("#item2").animate({
scrollTop: 0
}, 8000);
}, 8000);
}, 8000);
console.log($("#item1").outerHeight());
console.log(outerHeight1);
});
</script>
答案 0 :(得分:0)
感谢您提供有关一次性计算和嵌入setInterval部分内部代码的提示。
以下是有效的代码:
$(document).ready(function() {
$("#item1").animate({
scrollTop: $("#item1").height()
}, 4000);
setTimeout(function() {
$("#item1").animate({
scrollTop: 0
}, 4000);
}, 4000);
setInterval(function() {
// 4000 - it will take 4 secound in total from the top of the page to the bottom
$("#item1").animate({
scrollTop: $("#item1").height()
}, 4000);
setTimeout(function() {
$("#item1").animate({
scrollTop: 0
}, 4000);
}, 4000);
}, 8000);
});
var totalHeight = 0;
$("#leftcolumn").children().each(function() {
totalHeight = totalHeight + $(this).outerHeight(true);
});
var outerHeight = 0;
$('.profile').each(function() {
outerHeight += $(this).outerHeight();
});
$("#total-height").text(outerHeight + 'px');
setInterval(function() {
google.script.run.withSuccesshandler(function(data) {
$("input[type=text]").each(function() {
out += "<li>" + $(this).val() + "</li>";
});
out += "</ul>";
$('#listView').html(out);
}).getReadyLine();
}, 50000);
$('#mybutt').click(function() {
var out = '<ul>';
$("input[type=text]").each(function() {
out += "<li>" + $(this).val() + "</li>";
});
out += "</ul>";
$('#listView').html(out);
});
setInterval(function() {
google.script.run.withSuccessHandler(function(data) {
console.log(data);
document.getElementById("div").innerHTML = whatToWrite;
}).getReadyLine();
}, 1000);
setInterval(function() {
google.script.run.withSuccessHandler(function(data) {
console.log(data);
var temp3 = '';
for (var i = 0; i < data.length; i++) {
temp3 = 'p' + i + '/p';
document.getElementById("#item1").innerHTML = temp3;
}
}).getReadyLine();
}, 1000);
setInterval(function() {
google.script.run.withSuccessHandler(function(data) {
var temp3 = '';
for (var i = 0; i < data.length; i++) {
temp3 = 'p' + data[i] + '/p';
document.getElementById("#item1").innerHTML = temp3;
temp3 = '';
}
}).getReadyLine();
}, 1000);
//This is the server side code that returns the data, it works fine, have checked it;
function getReadyLine() {
var rawData = sheetMAT.getRange(3, 2, sheetMAT.getLastRow() - 2, 5).getValues();
for (var i = 0; i < rawData.length; i++) {
if (rawData[i][3] === "A Ready Line" && rawData[i][4] === "ATY") {
temp1 = ' ' + data[i][0];
temp2.push(data[i][1], temp1);
dataReadyLine.push(temp2);
temp1 = '';
temp2 = [];
}
}
return dataReadyLine;
}
//This is the client side code that should populate the innerHTML of the DIV template that is shown below;
setInterval(function() {
google.script.run.withSuccessHandler(function(data) {
var temp3 = '';
for (var i = 0; i < data.length; i++) {
temp3 = 'p' + data[i] + '/p';
document.getElementById("#item1").innerHTML = temp3;
temp3 = '';
}
}).getReadyLine();
}, 10000);
setInterval(function() {
google.script.run.withSuccessHandler(function(data) {
var temp3 = '';
for (var i = 0; i < data.length; i++) {
temp3 += '<p>' + data[i].join() + '</p>';
}
document.getElementById("item1").innerHTML = temp3;
}).getReadyLine();
}, 1000);
//This is the code that dynamically extracts data every second from the server and populates it into to DIV element.
setInterval(function() {
google.script.run.withSuccessHandler(function(data) {
var temp3 = '';
for (var i = 0; i < data.length; i++) {
temp3 += '<p>' + data[i].join() + '</p>';
}
document.getElementById("item1").innerHTML = temp3;
}).getReadyLine();
}, 1000);
//This is the code that should calculate the total height of all the children elements of DIV element. But it is not working, not calculating.
var outerHeight1 = 0;
$("#item1").children().each(function() {
outerHeight1 += $(this).outerHeight();
});
$(document).ready(function() {
setInterval(function() {
google.script.run.withSuccessHandler(function(data) {
var temp3 = '';
for (var i = 0; i < data.length; i++) {
temp3 += '<p>' + data[i] + '</p>';
}
document.getElementById("item1").innerHTML = temp3;
}).getReadyLine();
var outerHeight1 = 0;
$("#item1").children().each(function() {
outerHeight1 += $(this).outerHeight(true);
});
console.log(outerHeight1);
$("#item1").animate({
scrollTop: outerHeight1
}, 8000);
setTimeout(function() {
$("#item1").animate({
scrollTop: 0
}, 8000);
}, 1000);
setInterval(function() {
// 4000 - it will take 4 secound in total from the top of the page to the bottom
$("#item1").animate({
scrollTop: outerHeight1
}, 8000);
setTimeout(function() {
$("#item1").animate({
scrollTop: 0
}, 8000);
}, 8000);
}, 1000);
}, 1000);
var outerHeight2 = 0;
$("#item2").children().each(function() {
outerHeight2 += $(this).outerHeight(true);
})
$("#item2").animate({
scrollTop: outerHeight2
}, 8000);
setTimeout(function() {
$("#item2").animate({
scrollTop: 0
}, 8000);
}, 8000);
setInterval(function() {
// 4000 - it will take 4 secound in total from the top of the page to the bottom
$("#item2").animate({
scrollTop: outerHeight2
}, 8000);
setTimeout(function() {
$("#item2").animate({
scrollTop: 0
}, 8000);
}, 8000);
}, 8000);
});