亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單擊javascript時顏色不會正確更改

單擊javascript時顏色不會正確更改

米琪卡哇伊 2021-11-18 09:54:56
我有這個下拉列表,它有兩個選項,藍色和綠色。如果我選擇藍色,每當我點擊文本輸入字段時,它的背景就會在藍色和黑色之間切換,這是文本字段的背景顏色。紅色選項也是如此。但是,我只工作過第一次和第二次的代碼。從第三次開始,即使我選擇紅色,它也會在藍色和另一種顏色之間切換。這是我的 HTML:有誰知道出了什么問題?我在想也許我沒有完全理解 jquery 的更改功能是如何工作的。$('#change_color').on('change', function() {  //get the text value of the option chosen  var colorOption = $("#change_color option:selected").text();  //if option chosen is red then allow change input box to red  if (colorOption === 'Red') {    $('.my-input').click(function(inputBox) {      $(inputBox.target).toggleClass('red');    });  }  //if option is chosen is red then allow change input box to blue  else {    $('.my-input').click(function(inputBox) {      $(inputBox.target).toggleClass('blue');    });  }});.my-input {  background-color: black;  width: 5%;  font-size: 3vw;}.red {  background-color: red;  width: 5%;  font-size: 3vw;}.blue {  background-color: blue;  width: 5%;  font-size: 3vw;}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><select id="change_color" class="form-control box-border" placeholder="SPECIAL CHAR">  <option selected disabled>Special Char</option>  <option>Red</option>  <option>Blue</option></select><input type="text" class="my-input"><input type="text" class="my-input"><input type="text" class="my-input">
查看完整描述

2 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

當您這樣做時$(element).click(...),您將一個新的偵聽器附加到該元素。如果您重復執行此操作,這些偵聽器將堆疊。在您的示例中,每次更改下拉列表時,您都會添加一個新事件 -而不是替換前一個事件。

相反,最簡單的方法可能是這樣的:

  • 有一個存儲顏色的全局變量

  • 將更改事件附加到您的下拉列表。更改后,將全局顏色變量設置為所選選項

  • 將點擊事件附加到您的輸入。單擊時,將背景設置為全局顏色變量

看起來像這樣:

我有這個下拉列表,它有兩個選項,藍色和綠色。如果我選擇藍色,每當我點擊文本輸入字段時,它的背景就會在藍色和黑色之間切換,這是文本字段的背景顏色。紅色選項也是如此。但是,我只工作過第一次和第二次的代碼。從第三次開始,即使我選擇紅色,它也會在藍色和另一種顏色之間切換。這是我的 HTML:


有誰知道出了什么問題?我在想也許我沒有完全理解 jquery 的更改功能是如何工作的。


$('#change_color').on('change', function() {

  //get the text value of the option chosen


  var colorOption = $("#change_color option:selected").text();


  //if option chosen is red then allow change input box to red

  if (colorOption === 'Red') {

    $('.my-input').click(function(inputBox) {

      $(inputBox.target).toggleClass('red');

    });

  }


  //if option is chosen is red then allow change input box to blue

  else {

    $('.my-input').click(function(inputBox) {

      $(inputBox.target).toggleClass('blue');

    });

  }

});

.my-input {

  background-color: black;

  width: 5%;

  font-size: 3vw;

}


.red {

  background-color: red;

  width: 5%;

  font-size: 3vw;

}


.blue {

  background-color: blue;

  width: 5%;

  font-size: 3vw;

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<select id="change_color" class="form-control box-border" placeholder="SPECIAL CHAR">

  <option selected disabled>Special Char</option>

  <option>Red</option>

  <option>Blue</option>

</select>

<input type="text" class="my-input">

<input type="text" class="my-input">

<input type="text" class="my-input">


查看完整回答
反對 回復 2021-11-18
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

找到上面的jsfiddle。


您可以使用 just$('.my-input')來調用單擊事件,刪除所有類,然后進行檢查以查看colorOption您選擇的內容。


//if option chosen is red then allow change input box to red

$('.my-input').click(function(inputBox) {

  colorOption = $("#change_color option:selected").text();

  $(this).removeClass();

  colorOption === 'Red' ? $(inputBox.target).addClass('red') : $(inputBox.target).addClass('blue');

});

.my-input {

  background-color: black;

  width: 5%;

  font-size: 3vw;

}


.red {

  background-color: red;

  width: 5%;

  font-size: 3vw;

}


.blue {

  background-color: blue;

  width: 5%;

  font-size: 3vw;

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<select id="change_color" class="form-control box-border" placeholder="SPECIAL CHAR">

  <option selected disabled>Special Char</option>

  <option>Red</option>

  <option>Blue</option>

</select>

<input type="text" class="my-input">

<input type="text" class="my-input">

<input type="text" class="my-input">


查看完整回答
反對 回復 2021-11-18
  • 2 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號