计算元素列表的 Javascript 像素宽度

Posted

技术标签:

【中文标题】计算元素列表的 Javascript 像素宽度【英文标题】:Calculate Javascript pixel widths for list of elements 【发布时间】:2015-11-14 14:09:30 【问题描述】:

我有一个包含 4 个数字的列表。如果我将 100 除以列表的长度,我得到 25。我想将四个元素的宽度设置为这个数字的倍数,例如。第一个是 25px,第二个是 50px,依此类推。

这是我目前写的(伪)代码:

list1,2,3,4
var array = list.split(',');
var width = 100 / array.length;
for (var n = 0; n < array.length; n++) 
  if(array[n]==1) 
    width = width; //here I want width as 25;
    <div style="width:"+Width +"></div>
  
  if(array[n]==2)
    width = width+width;//here I want width as 50
    <div style="width:"+Width +"></div>
  
  if(array[n]==3) )
    width = width+width;//here I want width as 75
    <div style="width:"+Width +"></div>
  
  if(array[n]==4 )
    width = width+width;//here I want width as 100
    <div style="width:"+Width +"></div>
  

【问题讨论】:

在为您的问题命名时,您确实需要更加努力。此外,您的代码原样不会执行,我不确定需要更改哪些内容才能使其执行,因为您似乎随机注入了 html 您的问题的解释似乎有点不清楚。 =) 首先,您在没有正确表示法的情况下在 javascript 和 html 之间切换。您的代码不知道您要做什么。请务必在返回 javascript 之前停止 HTML 部分(注意结束引号):&lt;/div&gt;"。首先按照这些行编辑您的代码,然后尝试。您可能会取得更大的成功。 【参考方案1】:

您不需要所有这些 if() 测试:

for (var n = 0; n < array.length; n++) 
   width = 25 * (n + 1);
   ...

s0

n = 0   -> width = 25 * (0 + 1) -> 25 * 1 -> 25
n = 1   -> width = 25 * (1 + 1) -> 25 * 2 -> 50
n = 2   -> width = 25 * (2 + 1) -> 25 * 3 -> 75
etc...

【讨论】:

感谢 Marc B 的建议,我很有帮助【参考方案2】:

不是 100% 确定您的要求,但我认为您只想将宽度乘以 2、3、4,具体取决于 n 是什么。 (转到 Marc B 的答案)

编辑:顺便说一句,当您错误地声明宽度时(我认为)使用大写 W var Width 应该: var width

【讨论】:

实际上这会导致width ≈ 2ⁿ【参考方案3】:

您似乎混淆了 html 和 javascript 语法。 Html 就是那些&lt;tag&gt; 的东西。

首先,我推荐你this course 或其他一些,只是为了开始使用 JavaScript。

要在 JS 中创建元素,您可以使用document.write,这可能更容易,但只能在文档加载之前使用。你可以这样使用它:

width = 42; //or whatever
document.write('<div style="width: '+width+'px">adsf</div>');

或者更困难但也更灵活的方式——使用DOM。你可以这样做:

var div = document.createElement('div'); //create new element
div.style.width = 42; //set its width to whatever you want
div.textContent = "some text"; //add some text into the div
someElement.appendChild(div); //insert the element into another one

这里的someElement 是您通过调用document.getElementById(或类似函数)获得的元素,或者,如果您希望它们直接在正文中,只需编写document.body

.

关于@Marc_B's answer,最终代码如下所示:

var list = [1,2,3,4];
var div;
for (var n = 0; n < array.length; n++) 
  div = document.createElement('div');
  div.style.width = 25*n;
  document.body.appendChild(div);

【讨论】:

以上是关于计算元素列表的 Javascript 像素宽度的主要内容,如果未能解决你的问题,请参考以下文章

选择固定宽度的下拉菜单,在 IE 中截断内容

javascript 元素的大小

计算HTMLElement尺寸的一些属性和方法

如何获取html元素的宽度并将像素转换为百分比[关闭]

JavaScript 怎么获取元素的宽度 ?

从样式设置为 % 的元素获取宽度(以像素为单位)?