как вызвать две функции с помощью одной кнопки - PullRequest
0 голосов
/ 03 ноября 2019

Я пытался изменить изображение и текст с помощью кнопки JavaScript. Я могу изменить или изображение или текст за один раз, но не ОБА. пожалуйста, помогите.

Это то, что я пытался

function myFunction(name) {
  document.getElementById("2").innerHTML = "SDMC " + name;
}
<html>
<body>
  <img class="img-1006" id="1" src="https://2.bp.blogspot.com/-lsb_v-7rE5c/XaSceQO2x9I/AAAAAAAAO5w/W-3M-Ccg6RYq73bBV7ihp7OdYzkNrIPmwCLcBGAsYHQ/s320/images%2B%25281%2529.png" style="height: 500px;" />
  <h1 class="textblock-4" id="2"> MEMBER</h1>
  <button class="btn-1" onclick="document.getElementById('1').src='https://2.bp.blogspot.com/-lsb_v-7rE5c/XaSceQO2x9I/AAAAAAAAO5w/W-3M-Ccg6RYq73bBV7ihp7OdYzkNrIPmwCLcBGAsYHQ/s320/images%2B%25281%2529.png' ">gggggggg </button> <button class="btn-1" onclick="myFunction('kkkkkkkkkk')">gggggggg </button>

  <button class="btn-2" onclick="document.getElementById('1').src='https://1.bp.blogspot.com/-XvSuPCgIHrc/Xb67ueOGjeI/AAAAAAAAPL8/T4F2rs5nIkA1A_UIi7oBCvevmIl0g5pVQCLcBGAsYHQ/s1600/download.jpg'">computer</button> <button class="btn-2" onclick="myFunction('yyyyyyyyy')">computer</button>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

Вызов двух функций - просто вопрос использования точки с запятой для их разделения. Например:

function myFunction() {
  setImage();
  setCaption();
}

В вашем случае это немного сложнее, так как вы обновляете изображение и вам нужно где-то сохранить URI и заголовок образа src.

В идеале вы хотите начатьдумать о разделении вашего встроенного JS и HTML. Разделение задач полезно, поскольку оно значительно облегчает написание, понимание и сопровождение кода.

В этом примере я отделил JS от HTML, чтобы сделать разметку проще для чтения. Существует контейнер (куда пойдут обновленное изображение и подпись) и пара кнопок, идентифицируемых идентификатором в атрибуте данных (я назвал их «компьютер» и «член» для удобства).

Информация об изображении и подписи теперь хранится в объекте JS с именем dict. Он содержит два объекта, идентифицируемых по ключу («компьютер» и «член»), которые содержат соответствующие данные.

Элементы кэшируются, а кнопки получают прослушиватели щелчков. При щелчке они вызывают функцию swap.

swap получает идентификатор с нажатой кнопки и вызывает getHTML, чтобы получить нужный HTML-контейнер из объекта словаря. HTML возвращается в виде строки, а контейнер HTML обновляется вместе с ним.

// The dictionary is an object that contains
// objects for each img/caption type
const dict = {
  member: {
    img: 'https://2.bp.blogspot.com/-lsb_v-7rE5c/XaSceQO2x9I/AAAAAAAAO5w/W-3M-Ccg6RYq73bBV7ihp7OdYzkNrIPmwCLcBGAsYHQ/s320/images%2B%25281%2529.png',
    caption: 'kkkkkkkkk'
  },
  computer: {
    img: 'https://1.bp.blogspot.com/-XvSuPCgIHrc/Xb67ueOGjeI/AAAAAAAAPL8/T4F2rs5nIkA1A_UIi7oBCvevmIl0g5pVQCLcBGAsYHQ/s1600/download.jpg',
    caption: 'yyyyyyyyy'
  }
};

// Cache the container and buttons
const container = document.querySelector('.container');
const buttons = document.querySelectorAll('.button');

// Add click listeners to the buttons
buttons.forEach(button => button.addEventListener('click', swap, false));

// Grabs the img and caption information from the
// dictionary using the id, and return a template literal
// describing the HTML you want to display
function getHTML(id) {
  const { [id]: { img, caption } } = dict;
  return `<img src="${img}" /><h3>SDMC ${caption}</h3>`;
}

// Grab the id from the element and set the container
// HTML to the returned HTML string from `getHTML` 
function swap() {
  const { dataset: { id } } = this;
  container.innerHTML = getHTML(id);
}
.container { margin-top: 1em; }
<html>
<body>
  <button class="button" data-id="member">Member</button>
  <button class="button" data-id="computer">Computer</button>
  <div class="container"></div>
</body>
</html>
Дополнительная литература
0 голосов
/ 03 ноября 2019

На вашем клике добавьте столько вызовов функций, сколько вы хотите, с помощью ";"между звонками. как если бы вы писали код, вызывающий функции одну за другой

 
function myFunction(name)
{
document.getElementById("2").innerHTML = "SDMC " + name;
}
 
<html>
<body>
  <img class="img-1006" id="1" src="https://2.bp.blogspot.com/-lsb_v-7rE5c/XaSceQO2x9I/AAAAAAAAO5w/W-3M-Ccg6RYq73bBV7ihp7OdYzkNrIPmwCLcBGAsYHQ/s320/images%2B%25281%2529.png" style="height: 500px;" /> 
  <h1 class="textblock-4" id="2"> MEMBER</h1>
  <button class="btn-1" onclick="document.getElementById('1').src='https://2.bp.blogspot.com/-lsb_v-7rE5c/XaSceQO2x9I/AAAAAAAAO5w/W-3M-Ccg6RYq73bBV7ihp7OdYzkNrIPmwCLcBGAsYHQ/s320/images%2B%25281%2529.png'; myFunction('kkkkkkkkkk') ">gggggggg </button> 
  

  <button class="btn-2" onclick="document.getElementById('1').src='https://1.bp.blogspot.com/-XvSuPCgIHrc/Xb67ueOGjeI/AAAAAAAAPL8/T4F2rs5nIkA1A_UIi7oBCvevmIl0g5pVQCLcBGAsYHQ/s1600/download.jpg';myFunction('yyyyyyyyy') ">computer</button> 
 
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...