2014-01-24 3 views
0

У меня есть две отдельные функции на одной странице моего сайта, обе из которых вызывают одну и ту же функцию Ajax. 2 функции должны быть различимы. Моим решением было передать строку (например, ) здесь) в одной из функций, например, в следующем упрощенном примере.Просто интересно, неужели это плохо? Практика кодирования JS

<script type="text/javascript"> 
function AjaxFunction(string) { 
    if (string === 'String') { 
     alert('You have clicked Button2'); 
    } else { 
     alert('You have clicked Button1'); 
    }  
} 
</script> 

<button type="button" id="Button1" onclick="AjaxFunction()">Click1</button> 
<button type="button" id="Button2" onclick="AjaxFunction('String')">Click2</button> 

Это кажется мне совершенно прекрасным. Единственная проблема заключается в том, что строка имеет значение null при нажатии кнопки Button1. Я думаю, что с этим нет никаких проблем, так как if ... else заботится о любой двусмысленности того, что делать с string. Я тестировал свою фактическую функцию Ajax, и все работает нормально, но поскольку я все еще немного новичок в кодировании, я всегда думаю, что глупые ошибки, о которых я не знаю, будут уничтожать сайт. Извините за тривиальный вопрос, но я пропускаю какие-либо проблемы с производительностью, ошибки и т. Д. С помощью этого подхода? Спасибо за любую помощь!

+1

Вы просите мнения, поэтому я укажу, что встроенный код JavaScript и старый код «onfoo» обработчика событий считаются плохой практикой кодирования. – Pointy

+3

Только проблема, я вижу, использует встроенные события. Большинство разработчиков используют атрибут данных или класс для элемента и имеют функцию проверки. – epascarello

+2

@epascarello хорошо, если он действительно пытается отличить одну кнопку от другой, было бы лучше передать 'this', чтобы функция получала фактический узел DOM. (По-моему.) – Pointy

ответ

0

Вам нужно передать пустую строку в первый звонок кнопки. Итак:

onclick="AjaxFunction('')" 
+0

Спасибо за ответ ... может ли пустая строка иметь преимущество над никакой строкой вообще (т. Е. AjaxFunction())? –

+0

Если функция ожидает параметр, ошибка будет выдана, если ни один не передан. – apohl

Смежные вопросы