0

私はこの機能を使用しています:

function sel_test(e) {
  //alert(e.length-1);

  var splitdata = e.split("d");
  var newstr = e.substring(0,e.length-1);

  dropcall = 1;
  nodes = newstr.split(';');
  o = 0;
  if (nodes[0] == '1') o = nodes.shift();
  for (i=0;i<nodes.length;i++) {
    e = nodes[i];
    var ul = document.getElementById(e);
    if (icons) var img = document.getElementById(e+'i');
    if (ul) {
      if (((ul == 'none') AND (ul.style.display == 'none')) OR (ul.style.display == '')) {
        ul.style.display = 'block';
      } else if (!o) {
        ul.style.display = 'none';
      }
    }
  }

javascript で括弧が見つからないというエラーが表示されます:

if (((ul == 'none') AND (ul.style.display == 'none')) OR (ul.style.display == '')) {

これを行う正しい方法は何ですか。

4

3 に答える 3

4

&& と || を使用する必要があります。AND と OR の代わりに。

あなたはすべきではないですか?

于 2012-05-30T00:09:05.287 に答える
3

これを試して:

if (((ul == 'none') && (ul.style.display == 'none')) || (ul.style.display == ''))

JavaScript には AND 演算子がありますが、ANDそれは単語ではなく、 &&(&ビット単位の and の場合も ) です。OR同様に、あなたが望むのではなく||(または|ビットごとに)。

ul変数が文字列と等しくなることはないことに注意してください。'none'からの戻り値document.getElementById(e)は、常に一致する DOM 要素であるかnull、指定された ID を持つ要素がない場合です。

さらに読む:論理演算子(andは常にorを返すとは限らないため、これを読む必要があります。and MDN で説明されています)。&&||truefalse

于 2012-05-30T00:08:57.653 に答える
0

また、関数の終了権が波打つように欠落しています。

于 2012-05-30T00:14:18.747 に答える