【问题标题】:chess style pattern国际象棋风格图案
【发布时间】:2012-08-24 01:28:28
【问题描述】:

我想为i 行和j 列创建一个如图所示的模式:

此代码不适用于所有情况。

var z = 0
  for(var i = 0;i<s;i++)
    for(var j = 0;j<o;j++,z++)
      color = (z%2==1?"white":"gray");

You can play with it here.

【问题讨论】:

  • 在这里工作正常,你的例子更新了吗?
  • 是的,问题解决了,感谢 Deltaflux。
  • 您应该发布一个答案并接受它,以便将来搜索此问题的任何人都能找到答案,而不仅仅是“问题已解决”。
  • @h2ooooooo 10 分钟内不允许

标签: javascript math modulo


【解决方案1】:

试试这个,将 i 和 j 相加,而不是使用第三个变量:

for (var i = 0; i < s; i++)
  for (var j = 0; j < o; j++)
    color = ( (i + j) % 2 == 1 ? "white" : "gray" );

【讨论】:

    【解决方案2】:

    使用这个条件:

    color = (i + j) % 2 == 1 ? "white" : "gray";
    

    【讨论】:

      【解决方案3】:

      xy 相加并得到模数。

      // ...
      
      var table$ = $('<table>');
      for(var y = 0; y < s ; y++) {
        var tr$ = $('<tr>');
        for(var x = 0; x < o; x++) {
          var td$ = $('<td>').css({
            width: p_w,
            height: p_h,
            'background-color': getColor(x, y)
          });
          tr$.append(td$);
        }
        table$.append(tr$);
      }
      
      // ...
      var Color = {
        GRAY: '#aaa',
        WHITE: '#fff'
      };
      
      function getColor(x, y) {
        return (x + y) % 2 === 0 ? Color.WHITE: Color.GRAY;
      }
      

      Demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-17
        • 1970-01-01
        • 2014-03-02
        • 1970-01-01
        • 2013-05-24
        • 2015-05-02
        • 1970-01-01
        • 2018-03-25
        相关资源
        最近更新 更多