【发布时间】:2015-12-08 11:26:42
【问题描述】:
我对 JavaScript 知之甚少,但就像我所做的一切一样,我一头扎进了一些复杂的代码中(至少 我 认为它很复杂)。 该代码基本上设计为将尽可能多的(大约)300x200 图像放入一个称为“超级容器”的 div 中。 应该创建一个名为“容器”的 div,然后应该用图像填充它。 图像将稍微调整大小以使其更美观,并且还会计算 nr 行和列。 我不太关心计算图像(或框)的数量、大小或位置的逻辑是如何工作的,因为我认为这是合理的。 我更关心我的语法和 javascript 语言本身的使用,因为目前几乎没有显示任何内容。 'setupboxes' 函数在我的 'index.php' 中被调用,我很确定我不会弄错。
参见下面的 .js 代码:
function setupboxes() {
var stdbw=300; //standard box width
var stdbh=200; //standard box height
var w=document.getElementById("containerparent").clientWidth; //get width of containerparent
var h=document.getElementById("containerparent").clientHeight; //get height of containerparent
var b=10; //set containerparent padding
var p=b; //set box padding
if(w>999) {
b=20; //set containerparent padding to 20px if screen width over 999px
p=b; //set box padding to 20px if screen width over 999px
}
var nrcols=Math.round((w-2*b)/(stdbw+2*p)); //set integer for nr of columns
var nrrows=Math.round((h-2*b)/(stdbh+2*p)); //set integer for nr of rows
var nrboxes=nrcols*nrrows; //calculate nr of boxes
var bh=(((h-2*b)/nrrows)-2*p); //set box height
var bw=(((w-s*b)/nrcols)-2*p); //set box width
var top=(h-(nrcols*(bh+2*p))); //set distance of container from top of containerparent
var left=(w-(nrrows*(bw+2*p))); //set distance of container from left of containerparent
var conth=((nrcols*(bh+2*p))+2*b); //set height of container
var contw=((nrrows*(bw+2*p))+2*b); //set width of container
var divcont=document.getElementById('containerparent').insertAdjacentHTML('afterbegin', '<div id="container"></div>'); //create container
divcont.style.position = 'relative';
divcont.style.top = top;
divcont.style.left = left;
divcont.style.border = 'red 1px solid';
var nrboxesit=nrboxes;
var boxnr=1;
while(nrboxesit>0){ //create boxes
document.getElementById('container').insertAdjacentHTML('beforeend', '<img src="images/0000001.jpg">');
img.style.padding = p;
img.style.height = bh;
img.style.width = bw;
boxnr=boxnr+1;
nrboxesit=nrboxesit-1;
}
}
就像我说我是 JavaScript 新手,所以请不要以为我会尝试一些简单的修复!
提前致谢。
【问题讨论】:
-
所以,我猜你不是在等待窗口加载事件?你在哪里调用你的php中的脚本?您可以使用 F12(大多数情况下)打开浏览器的开发工具,并在 setupboxes 函数中添加
debugger;语句 -
我没有仔细阅读你的所有代码,但是调整样式值很长一段时间以来都需要一个单位(如
px),默认情况下值不是像素。 -
您的JavaScript console 中应该至少有一两个错误。 (
p未定义,然后s未定义)。不要忽视那些。此外,您不能将insertAdjacentHTML()的结果用作元素。 -
好吧,对于 1,s 在你计算 bw 的地方是未定义的
-
ah ... s 应该是 2 ...
标签: javascript getelementbyid createelement