我对网页设计和与之相关的编程非常陌生。我正在使用 JavaScript 制作一个简单的画廊,我知道使用 jQuery 非常容易。但是我不允许使用它(作业)。
这是问题所在的代码:
var img = new Array(); //declared globally, accessed by other functions
function displayImage(){
var img_num = document.getElementById('img_num').getAttribute("value");
for(j=0;j<img_num;j++)
img.push(document.getElementById('h'+j).getAttribute("value"));
var list_width = 0;
for(var i=0;i<img_num;i++)
{
document.getElementById('list_holder').innerHTML += "<img src='" +img[i]+ "'onclick=\"show(this.id);\" height = \"70%;\"id='"+i+"'/>";
list_width += document.getElementById(i).offsetWidth + 15;
}
document.getElementById('list_holder').style.width = list_width+"px";
return false;
}
ID 为 h0,h1,h2... 的元素是隐藏的输入类型,包含图像的路径,ID 的 0,1,2.. 是标签。
我在 JS 中使用它们来img
使用img.push
. 然后我使用数组中的值来创建那么多<img>
标签(指定高度,并留出宽度以决定纵横比。现在我有必要计算父级的总宽度div
('list_width')这些img
标签,所以我想到了使用list_width+=document.getElementById(i).offsetWidth
.
但是发生的事情是,当我第一次打开页面时,没有返回实际宽度。它返回4
,这基本上是我想出的标签的最小宽度。只有在刷新页面时它才能按预期工作。我知道我可以通过在加载页面后刷新一次页面来使用解决方法,但我想知道是否有任何“首选”或“专业”方式来做到这一点。
提前致谢。