onclick не вызывает функцию javascript

#javascript #jquery

#javascript #jquery

Вопрос:

Ребята, я написал подобный код в теге script моей веб-страницы

 window.reset = function (e, elementId) {
  e.wrap("<form>").closest("form").get(0).reset();
  $(elementId).attr("src", " ").width(30).height(30);
  e.unwrap();
};

window.a = function (e, elementId) {
  e.wrap("<form>").closest("form").get(0).reset();
  $(elementId).attr("src", " ").width(30).height(30);
  e.unwrap();
};
  

Обе функции выполняют одну и ту же работу. Но проблема в том, что функция сброса не вызывается при нажатии, а вызывается функция «a»

Я имел в виду:

Это кнопка, которая вызывает функцию сброса. Таким образом, сброс не вызывается

  <button type="button" id="img-refresh" class="btn btn-secondary" data-dismiss="modal" 
    onclick="reset($('#image'), '#img-show');"
  > Refresh </button>
  

Таким образом, вызывается метод ‘a’.

  <button type="button" id="img-refresh" class="btn btn-secondary" data-dismiss="modal" 
    onclick="reset($('#image'), '#img-show');"
  > Refresh </button>
  

Когда я заменяю «сброс» на «a», он работает.
Может кто-нибудь сказать мне, в чем проблема?

Несмотря на то, что я меняю ее следующим образом

 window.customFunction = {
  reset: function (e, elementId) {
    e.wrap("<form>").closest("form").get(0).reset();
    $(elementId).attr("src", " ").width(30).height(30);
    e.unwrap();
  },
};
  

и используйте ее так, она не работает

  <button type="button" id="img-refresh" class="btn btn-secondary" data-dismiss="modal" 
    onclick="customFunction.reset($('#image'), '#img-show');"
  > Refresh </button>
  

Комментарии:

1. Почему onclick="reset($('#image'), '#img-show');" , когда есть jQuery?

2. Я вас не понял. Не могли бы вы, пожалуйста, более четко

Ответ №1:

Я предполагаю, что reset это зарезервированное слово window , контекст … или, может быть, другой скрипт из вашего vendros перезаписывает вашу функцию

Мой первый вопрос… почему вы так объявляете свои функции?

Я могу предложить 2 варианта :

Вы могли бы использовать простое объявление функции вместо window.reset того, что вы сделали

   function reset() { 
    // do stuff
  }
  

А затем использовать ее точно так же, как вы уже делали?

или

Если вы явно хотите, чтобы это было в window контексте, используйте родительский ключ, чтобы убедиться, что вы не перезаписали другие функции, а какой-либо внешний скрипт не перезаписал ваш…

 window.myCustonFunction = {
  reset: function() {  },
  a: function() { }
}
  

Комментарии:

1. Эй, я пытался следовать второму методу. Но это не сработало

2. Взгляните на РЕДАКТИРОВАНИЕ