Я не уверен, что это лучшая практика или полный неправильный способ сделать это, но я пытаюсь динамически генерировать некоторые функции и использовать их при нажатии кнопки. Кнопки также динамически генерируются.Сгенерированные функции
Я делаю переключатель потока твитчи для моего сайта гильдии и вместо того, чтобы добавлять все больше и больше кода вручную для каждого стримера, который подписывается, я хочу просто добавить один вызов функции. Прямо сейчас у меня есть это:
<script id="buttonScripts">
twitchStatus('player1');
twitchStatus('player2');
twitchStatus('player3');
function twitchStatus(twitchName){
$.getJSON('https://api.twitch.tv/kraken/streams/' + twitchName, function(streamData){
if (streamData.stream == null){
$(twitchButtons).append('<button type="button" class="btn btn-fill btn-round" onclick="' + twitchName + 'Function();">' + twitchName + '\'s Stream<img src="images/toffline.png"></button>');
$(buttonScripts).append('function ' + twitchName + 'Function() {var StreamObject = document.getElementById("live_embed_player_flash");if (StreamObject != null) {StreamObject.setAttribute(\'data\', \'http://www.twitch.tv/widgets/live_embed_player.swf?channel=' + twitchName + ');}}');
} else {
$(twitchButtons).append('<button type="button" class="btn btn-fill btn-round" onclick="' + twitchName + 'Function();">' + twitchName + '\'s Stream<img src="images/tonline.png"></button>');
$(buttonScripts).append('function ' + twitchName + 'Function() {var StreamObject = document.getElementById("live_embed_player_flash");if (StreamObject != null) {StreamObject.setAttribute(\'data\', \'http://www.twitch.tv/widgets/live_embed_player.swf?channel=' + twitchName + ');}}');
}
})
};
</script>
Скрипт генерирует кнопки и функции, если он обнаружит их или в автономном режиме, но использует другой формат PNG, чтобы показать статус. Сама функция изменяет объект внедрения, чтобы заменить URL-адрес потока выбранным URL-адресом стримеров, и он отлично работает, когда он не генерируется с помощью этой функции.
Сгенерированные функции добавляются к нижней части скрипта, поэтому они живут в одном наборе тегов скриптов. Есть ли что-то, чего я не вижу, что помешало бы им быть доступным для звонка onclick с кнопок?
Нет. Вы должны использовать закрытие вместо какой-либо формы 'eval'. – Bergi
Какую ошибку вы получаете в консоли? – brso05
twitchswitcher.html: 1 Uncaught ReferenceError: player1Function не определен –