JQuery - 用1个按钮显示/隐藏2个div并更改按钮的值

时间:2015-07-30 11:12:42

标签: javascript jquery html show-hide

我试图这样做,当我点击一个按钮时,它会隐藏一个div并显示另一个div,但同时更改按钮的值以反映div的不同内容。

我已经能够创建这两个功能但是当我把它们组合在一起时,它似乎就会破裂。

这里是显示/隐藏功能

Javascript:

function change() {
     if (document.getElementById('tabs')) {
        if (document.getElementById('tabs').style.display == 'none') {
        document.getElementById('tabs').style.display = 'block';
        document.getElementById('parkList').style.display = 'none';}
        else {
        document.getElementById('tabs').style.display = 'none';
        document.getElementById('parkList').style.display = 'block';}
       }
     }

这是价值变化函数

使用Javascript:

function change( el ) {
  if ( el.value === "div1" )
      el.value = "div2";
  else
      el.value = "div1";
 }

这里是

的HTML

HTML:

<div id="tabs">Div 1</div>
<div id="parkList">Div 2</div>

<input type="submit" value="div1" onclick="return change(this);"/>

我有点新手,所以任何帮助都会很棒。

6 个答案:

答案 0 :(得分:1)

您可以尝试使用JQuery toogle()函数来切换匹配元素的显示属性。

  • 默认情况下parkList div被隐藏。
  • submit按钮上添加点击监听器。
  • 点击提交按钮
  • 切换两个div的显示属性
  • 按可见div的内容设置提交按钮的值。

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="tabs">Div 1</div>
<div id="parkList" style="display:none">Div 2</div>

<input type="submit" value="Div 1"/>

<script>
  
  var submit = $('input[type="submit"]');
  var tabs = $('#tabs');
  var parkList = $('#parkList');
  
  submit.click(function(e){
     tabs.toggle();
     parkList.toggle();
    
     if(tabs.css('display') == 'none'){
       submit.val(parkList.text());
     }else{
       submit.val(tabs.text());
     }
  });
  
</script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

问题似乎是2个函数具有相同的名称。

当您致电change()以显示阻止/无元素时,最有可能发生的事情是您覆盖change(element)

例如,将第二个函数名称更改为changeValue(el),它可以正常工作

function changeValue( el ) {
  if ( el.value === "div1" )
     el.value = "div2";
  else
     el.value = "div1";
}

<input type="submit" value="div1" onclick="return changeValue(this);"/>

答案 2 :(得分:0)

好像你有两个同名的功能。  function change() 尝试重命名其中一个。

答案 3 :(得分:0)

你可以使用jquery,点击按钮点击下面显示/隐藏div的代码: 无需编写两个函数。点击按钮即可调用以下功能。

extendTextCodecMaps

答案 4 :(得分:0)

很抱歉,如果我没有做到这一点,你在哪里调用show / hide功能更改()?

命名按钮正在运行..你需要为样式分配一个事件监听器或调用该函数,使用如下的jquery:

public static void main(String[] args) throws Exception {

    Results results = new Results();

    ThreadDictionarySearch threadA = new ThreadDictionarySearch(results, "dictionary A");
    ThreadDictionarySearch threadB = new ThreadDictionarySearch(results, "dictionary B");
    ThreadDictionarySearch threadC = new ThreadDictionarySearch(results, "dictionary C");
    ThreadDictionarySearch threadD = new ThreadDictionarySearch(results, "dictionary D");

    threadA.start();
    threadB.start();
    threadC.start();
    threadD.start();

    if (results.isReady())
    // it stays here until all dictionaries are searched
    // because in "Results" it's told to wait() while not finished;

for (String string : results.getAllResults()) {
        System.out.println("RESULT: " + string);
    }

您需要更改两个功能之一的方法名称&#39;更改&#39;。

答案 5 :(得分:0)

默认情况下,您可以为第二个div

显示无
<input type="submit" value="tabs" onclick="return change(this);"/>

function change( el ) {
  if ( el.value === "tabs" )
  {
      el.value = "parkList";
      document.getElementById('tabs').style.display = 'none';
      document.getElementById('parkList').style.display = 'block';}
  }
  else
  {
      el.value = "tabs";
      document.getElementById('tabs').style.display = 'block';
      document.getElementById('parkList').style.display = 'none';} 
  }
 }