【问题标题】:How to combine multiple if statements如何组合多个if语句
【发布时间】:2015-08-13 01:23:45
【问题描述】:

经过艰苦的研究,我制作了以下代码并使其工作,我做了谷歌研究,但不知道如何组合这些 if 语句,我知道它们可以更简单地编写,但在我的情况下,也请告诉我如何每次增加500px,在我的情况下是否可以,请帮助...

for (var i = 0, row; row = document.getElementsByTagName('table')[0].rows[i]; i++) {
    if (row.offsetHeight > 200) {
        document.getElementsByTagName('table')[0].style.width = "1500px";
        if (row.offsetHeight > 200) {
            document.getElementsByTagName('table')[0].style.width = "2000px";
            if (row.offsetHeight > 200) {
                document.getElementsByTagName('table')[0].style.width = "2500px";
            }
        }
    }
}

【问题讨论】:

  • 请清楚地格式化您的问题。是否也发生了任何错误,如果是,您是否检查了控制台?如果有的话,你能把它们贴在这里吗?

标签: javascript


【解决方案1】:

看起来你可以使用while

var i = 0, j, row, table = document.getElementsByTagName('table')[0];
j = table.offsetWidth;
while (row = table.rows[i++]) {
    while (row.offsetHeight > 200 && j < 2500) {
        j += 500;
        table.style.width = j + 'px';
    }
}

【讨论】:

  • 感谢您的回答,我尝试了j = $('table').width() 但无法正常工作,您能告诉我如何使其工作以获取我的表格宽度而不是 1000px...
  • @Mr.Rick 您可以将 j 的设置移到外循环之外并将其设置为表的offsetWidth,请参阅编辑
  • 感谢我还删除了没有任何价值的额外 var j,var i = 0, row, table = document.getElementsByTagName('table')[0], j = table.offsetWidth; while (row = table.rows[i++]) { while (row.offsetHeight &gt; 160 &amp;&amp; j &lt; 4000) { j += 300; table.style.width = j + 'px'; } } 我的代码可以吗,感谢您的回答和时间。
  • @PaulS。你知道有什么好笑的吗?从 2012 年 1 月开始,Rick 先生提出这个问题来回答这个问题。stackoverflow.com/questions/8970362/… 看起来很眼熟?大声笑
  • @AdamBuchananSmith 希望他学到了一些东西。你知道一些更有趣的事情,请关注"source reference" 到他和 "i found the solution myself" 提出和回答的第三个问题,这里没有参考
【解决方案2】:

如果你想从一个 if 语句中调用所有 document.getElement...,你需要的格式是:

if (row.offsetHeight > 200)
{
    document.getElements...1;
    document.getElements...2;
    //and so on.
}

花括号是告诉浏览器所有子语句只有在条件返回 true 时才应该执行的方式。

for (var i = 0, row = document.getElementsByTagName('table')[0].rows[i]; i < row; i++) {
    if (row.offsetHeight > 200) 
    {
        document.getElementsByTagName('table')[0].style.width = "1500px";
        document.getElementsByTagName('table')[0].style.width = "2000px";
        document.getElementsByTagName('table')[0].style.width = "2500px";
    }
}

老实说,我不确定你想要什么效果。这将要做的是测试 row.offsetHeight > 200,并分三步将 ('table')[0] 的样式增加到 2500px,然后重复该过程行时间。如果您能解释一下您正在尝试的效果,我可能会提供更多帮助。

var table = document.getElementsByTagName("table")

while (row.offsetHeight > 200)
{
table[0].style.width += 500;
}

我认为这样的事情可能会产生您正在寻找的行为。

【讨论】:

  • 那性能会提高吗,能写完整吗?
  • @Mr.Rick,我已经更新了我的答案。如果您能多解释一下您想要达到的目标,我可能会提供更多帮助。
  • 我想增加表格宽度,直到每行高度缩小到 200px。
  • 我认为,在您的代码中,它不会再次检查行高并将直接宽度增加到 2500px,这可能会导致不必要的宽度过大
  • 所以您需要的是类似于 while 语句的内容,该语句循环并增加行长并在每次迭代时测试高度。
猜你喜欢
  • 2019-01-12
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
相关资源
最近更新 更多