Функция запускается только через onclick

366
20 июля 2017, 01:05

Почему функция runCode() запускается только через button onclick? Пробовал разные варианты по этой ссылке, все равно результат не изменился, на что я должен обратить внимание?

var viewCollection = null;
function runCode() {
    var clientContext = new SP.ClientContext.get_current();
    if (clientContext != undefined && clientContext != null) {
        var web = clientContext.get_web();
        var listCollection = web.get_lists();
        var list = listCollection.getByTitle("Tasks");
        this.viewCollection = list.get_views();
        var viewInfo = new SP.ViewCreationInformation();
        viewInfo.set_title('MyView');
        this.viewCollection.add(viewInfo);
        clientContext.load(this.viewCollection);
        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
    }
}
function onQuerySucceeded() {
    var viewInfo = 'Tasks list current views: \n\n';
    var viewEnumerator = this.viewCollection.getEnumerator();
    while (viewEnumerator.moveNext()) {
        var view = viewEnumerator.get_current();
        viewInfo += view.get_title() + '\n';
    }
    alert(viewInfo);
}
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
<input id="Button1" type="button" value="Run Code" onclick="runCode()" />
Answer 1

Скорее всего, порядок выполнения скриптов нарушен. Проверьте в каком порядке загружаются скрипты. Когда Вы нажимаете на кнопку срабатывает событие onClick и как правило вся страница к этому времени загружена. Соответственно, где бы Вы не расположили кнопку, функция будет вызвана. Однако если обратить внимание на пример ниже, то window.onload не будет вызывать функцию, так как этой функции еще не существует. Есть еще вариант, что у Вас некоторые скрипты подключаются асинхронно. В этом и может лежать проблема.

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <button onClick="func('Кнопка выше скрипта');">Кнопка выше скрипта</button>
    <script>
    window.onload = func('Метод onload объекта window, ДО объявления функции');
    var func = function( message ){
        alert(message);
    };
    </script>
    <button onClick="func('Кнопка ниже скрипта');">Кнопка ниже скрипта</button>
</body>
</html>
READ ALSO
почему не работает .html()? [дубликат]

почему не работает .html()? [дубликат]

На данный вопрос уже ответили:

220
Как перевести данный код в обычный ES6?

Как перевести данный код в обычный ES6?

Начал работат с данной библиотекой Использую ES6Наткнулся на такой компонент:

253
Отправка данных с формы на почту JS

Отправка данных с формы на почту JS

Здравствуйте, у меня есть две формы

668
Как сделать сайт с движущимся и масштабируемым изображением?

Как сделать сайт с движущимся и масштабируемым изображением?

Хочу сделать сайт, на котором будет карта местности (изображение), которую можно будет двигать, нажимая и двигая мышку и увеличивать и уменьшать...

263