2017-04-22 10 views
0

私はこのコードを持っています。ステートメントの後でさえも、javascript querySelectorAll() - 方法

curr_attr.value = 'display: block' ; 

が実行されます。しかし、それは2回目に働くが、それは作業と非作業の間で交代する。

function filterEntries() { 
      var selectedText = $("#search :selected").text(); 
      var enteredText = $("#txtSearchValue").val(); 
      enteredText = enteredText.split(" ").join(""); 

      var table; 
      var allPanels = $(".panel"); 

      console.log("allPanels.hide(2000); at line number 202"); 
      allPanels.hide(1000); 

      if (selectedText.toLowerCase() === 'band name') { 
       if (enteredText === '') { 
        // remove filter and show all elements 
        console.log("allPanels.show(); at line number 210"); 
        allPanels.show(1000); 
       } else { 

        //console.log("allPanels.show(); at line number 215"); 
        //allPanels.show(1000); 

        table = document.querySelectorAll("[data-searchband=" + CSS.escape(enteredText) + "]"); 

        for (var i = 0; i < table.length; ++i) { 
         // print the tag name of the node (DIV, SPAN, etc.) 
         var curr_node = table[i]; 
         console.log(curr_node.tagName); 

         // show all the attributes of the node (id, class, etc.) 
         for (var j = 0; j < curr_node.attributes.length; ++j) { 
          var curr_attr = curr_node.attributes[j]; 
          console.log(curr_attr.name, curr_attr.value); 
          if (curr_attr.name === 'style') { 
           curr_attr.value = 'display: block' ; 
          } 
         } 
        } 
       } 
      else { 
       alert("Please select a search criteria"); 
      } 

     } 
<div class="row"> 
     <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
      <select id="search" class="navbar-inverse small" name="search" onchange="searchFilters()"> 
       <option value="-1">Search Criteria</option> 
       <option value="band">Band Name</option> 
       <option value="title">Content Title</option> 
      </select> 
      &nbsp; 
      <input type="text" class="small" id="txtSearchValue" placeholder="Search for..."> 
      &nbsp; 
      <span id="btnSearch" onclick="filterEntries()" class="btn btn-default btn-sm">Search</span> 
     </div> 
    </div> 
+1

'style'属性を見つけるためにループを使用する理由はありますか?とにかく、あなたが何を言っているのかはわかりません。 'querySelectorAll'は時々要素を見つけられないと言っていますか? –

+1

[最小、完全で検証可能な例](https://stackoveflow.com/help/mcve/)を追加してください(理由は... https://jsfiddle.net/wnoesqj0/) – Andreas

+0

私が言っていることは、 curr_attr.value = '表示:ブロック';代わりに動作しません。 allPanels.hide()を呼び出した後ではじめてです。 curr_attr.value = '表示:ブロック';実行されますが、パネルの1つを再表示しません。ボタンがクリックされた2回目に、再表示が機能します。 3回目の解読は機能しません。第四の時間は働きます。お役に立てれば。 –

答えて

-1

あなたはcurr_node.style.display = 'block'を使用することができます。

たとえばコンソールdocument.body.style.display = 'none'を入力し、その効果を確認します。

+0

それはスタイルを設定するもう1つの方法ですが、質問に記載されている問題をどのように解決するのでしょうか? –

0

問題はhideとshowです。私はhide(2000)とshow()を使っていました。 hide()をhide()に置き換えると、hide()が機能し始めました。私は、アニメーションがshow()またはdisplay = blockでうんざりしていたと思います。 Hide()で置き換えられたhide(2000)では、display =ブロックが完全に機能します。皆さんありがとう!

関連する問題