0

順序付けられていないリスト関数 現在、データベースから $firstline、$secondline、$thirdline の 3 つの変数がありますが、変数の 1 つが空である場合があります。順不同のリストに入れようとすると、そのフィールドに空白行があります。空の変数をチェックし、空の場合はその変数を除外する関数を作成するにはどうすればよいですか。基本的には、「最初の行、2 行目、3 行目が空白でない場合は、この順序なしリストを作成します。最初の行が空の場合は、順序なしリストから削除するなど..」

  <ul>
    echo "<li>$this->firstline</li>";
    echo "<li>$this->secondline</li>";
    echo "<li>$this->thirdline</li>";
  </ul>
4

4 に答える 4

1

関数は次のようになります

function checkEmpty($val){

if(!$val) return;
if($val) return "<li>".$val."</li>";

}

これで、この機能を使用できます

echo checkEmpty($this->firstline);
echo checkEmpty($this->secondline);
echo checkEmpty($this->thirdline);
于 2013-02-16T15:47:17.787 に答える
1

jQuery の場合:

$('li').filter(function(){
    return $(this).text().trim() === '';
}).remove();

JS フィドルのデモ

プレーンな JavaScript の場合:

function removeEmpty(tags, parent){
    if (!tags) {
        return false;
    }
    else {
        tags = tags.split(/\s+/);
        parent = parent && parent.nodeType === 1 ? parent : document.body;
        var children = [], _tmp;
        for (var i = 0, len = tags.length; i < len; i++) {
            _tmp = parent.getElementsByTagName(tags[i]);
            if (_tmp.length) {
                for (var I = 0, Len = _tmp.length; I < Len; I++){
                    children.push(_tmp[I]);
                }
            }
        }
        if (children.length > -1) {
            var i = children.length - 1,
                cur, txt;
            while (i) {
                cur = children[i];
                txt = (cur.textContent || cur.innerText).replace(/(^\s+)|($\s+)/g,'');
                if (!txt.length) {
                    cur.parentNode.removeChild(cur);
                }
                i--;
            }
        }
    }
}

removeEmpty('li em', document.getElementsByTagName('div')[0]);

JS フィドルのデモ

これは非常に長くなりますが、長さのほとんどは、1 回の関数呼び出しで複数のタグを許可するためのものであるため、関数を呼び出すことができます。

CSS の場合:

li:empty {
    display: none;
}

JS フィドルのデモ

ただし、これは単一の空白<li> </li>でも空ではない要素と見なします。

おそらくPHPを使用しています(最後にPHPを使用してからかなりの時間が経ちました):

echo strlen($this->firstline) > 0 ? "<li>$this->firstline</li>" : '';
echo strlen($this->secondline) > 0 ? "<li>$this->secondline</li>" : '';
echo strlen($this->thirdline) > 0 ? "<li>$this->thirdline</li>" : '';
于 2013-02-16T15:35:51.073 に答える
0

リストをphpで動的に表示しているので、次のようなものを試してください

echo ($this->firstline > "") ? "<li>" . $this->firstline . "</li>" : "";
echo ($this->secondline > "") ? "<li>" . $this->secondline . "</li>" : "";
echo ($this->thirdline > "") ? "<li>" . $this->thirdline . "</li>" : "";
于 2013-02-16T15:40:42.993 に答える
-2

これを試して :)

    ol, ul{list-style:none;}
于 2013-02-16T16:05:59.457 に答える