Итак, есть несколько вещей, которые я бы здесь изменил.
Самая большая проблема в том, что вы никогда не вызываете sample.add или sample.add.bindEvent.
Затем ваш скриптнужно будет переместить ниже вашей кнопки, чтобы кнопка была на странице при запуске вашего скрипта.Или вы можете использовать JS для задержки запуска скрипта, но я скажу, что довольно часто можно увидеть скрипты непосредственно перед концом тега body.
<HTML>
<head>
<script src="../closure-library/closure/goog/base.js"></script>
<script src="../js/material.js"></script>
<link rel="stylesheet" href="../css/material.css">
<link rel="stylesheet" href="../css/test_add.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
<div>
<button id="add" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect">
<i class="material-icons">add</i>
</button>
</div>
<script src="../js/add.js"></script>
</body>
</HTML>
Кроме того, я бы бросилвызов goog.base, если вам это не нужно.Если вам это нужно, пожалуйста, объясните, почему, и, возможно, мы можем помочь.
Наконец, нам просто нужно несколько тонких настроек;
goog.provide('sample.add');
goog.require('goog.dom');
goog.require('goog.events');
/** @export */
sample.add = function() {
self = this;
self.bindEvent();
};
sample.add.prototype.bindEvent = function() {
goog.events.listen(goog.dom.getElement('add'),
goog.events.EventType.CLICK, function(e) {
alert("HAPPY");
});
};
sample.add();
Я полагаю, вы можете напрямую вызвать sample.add.bindEvent, но я чувствовал, что это, вероятно, был только первый шаг к чему-то большему, и вы захотите пойти по этому пути.