Невозможно добавить модальное окно с помощью JavaScript

Я не могу добавить определенный div в модальное окно при извлечении данных с помощью pnp и JavaScript.

Весь процесс объяснил:
Функция DomyApiCalls - РАБОТАЕТ (Вытаскивает все ящики с заголовками)
Фильтрация функций - РАБОТАЕТ (Фильтрирует имена в алфавитном порядке) Невозможно добавить модальное окно с помощью JavaScript

Функция getModal - не работает (я хочу, чтобы, когда пользователь нажимает на поле, которое показывает модальное окно, и просто добавляет все файлыHtml в класс .Modalbody.

Это тянет заголовок страницы, вместо этого мне нужно имя папки снизу.
Невозможно добавить модальное окно с помощью JavaScript

$(document).ready(function(){
    DoMyApiCalls("boxWrap");

    var current_title = $(document).attr('title'); //CURRENT_TITLE is supposed to be the "FolderName".

    if (current_title == 'Acuvue') {
		    getModal("Acuvue");
    }
});

function DoMyApiCalls(elementId) {
$.ajax({
    url:  "/bdm/business-development/_api/web/lists/GetByTitle('CompletedSubmissionTiles')/Items?$select=EncodedAbsUrl,Title,Line1,Line2,Hyperlink,TargetWindow,DescriptionHTMLOption,Line1,TileOrder&$orderby=Title asc",
    type: "GET",
    headers: {
        "accept": "application/json; odata=verbose"
    },
    success: function (data) {
		if (data.d.results) {
			var object = data.d.results;
			var Line1var;

			for(var i = 0; i < object.length; i++)
			{
				if (object[i].Line1 != null) { // Covers 'undefined' as well
					Line1var = "<div class='Line1'>" + object[i].Line1 + "</div>";
				} else {
					Line1var = "";
				}
				
				$('#' + elementId).append("<div class='col-md-4 box' data-toggle='modal' data-target='#modal"+object[i].TileOrder+"' id='TileBox"+object[i].TileOrder+"'><div id='titleBox' class='titleBox'><h1>" + object[i].Title + "</h1><div style='width:250px; height: 130px;background-color: white; border: 1px solid lightgrey;'><img style='width: auto; height: inherit; margin-left: auto; margin-right: auto; display: block;' src='" +  object[i].EncodedAbsUrl + "' alt='" + object[i].Title +"'/></div></div></div>");
				
				filtering(object[i].Title);     
			  }		
		  }
    }									
  });
};

function filtering(title) {
    var filter = "Name eq '" + title + "'";
    
    $pnp.setup({
        baseUrl: "/bdm/business-development/"
    });
    
    $pnp.sp.web.folders.getByName('Completed Submissions').folders.filter(filter).expand("Files").get().then(function(data){    
    });
}

function getModal(folderName) {
	
  $pnp.setup({
		baseUrl: "/bdm/business-development/Completed%20Submissions/"
	});

	$pnp.sp.web.getFolderByServerRelativeUrl("/bdm/business-development/Completed%20Submissions/" + folderName).files.orderBy("Name").get().then(function(f) {

		var files = '';

		$.each(f, function(index, value){
			var filesHtml = "<div class='file'>" + 
								"<a target='_blank' href='" + value.ServerRelativeUrl + "?web=1'><img src='//PublishingImages/wordThumbSmall.png'/></a>" + 
								"<a target='_blank' href='" + value.ServerRelativeUrl + "?web=1'><p id='fileTitle'>" + value.Title + "</p></a>" + 
							"</div>";
			
			files = files + filesHtml;
		});
		$(".Modalbody").append(files);
	});
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id = "modal" class = "modal fade" role = "dialog">
    <div class = "modal-dialog modal-lg">
        <div class = "modal-content">
            <div class = "modal-header">
                <button type = "button" class = "close" data-dismiss = "modal"><div id = "x">&times;</div></button>
                <h4 class = "modal-title">

                </h4>
            </div>
            <div class = "modal-body">
                <div class = "FT-main-category" style = "margin-top:0px;">
                    <div class = "FT-main-header ms-WPBody"><strong><span style = "color: white;">Files</span></strong></div>
                    <div class = "Modalbody">
                    
                    </div>
                </div>
            </div>
            <div class = "modal-footer">
                <button type = "button" class = "btn btn-default" data-dismiss = "modal">Close</button>
            </div>
        </div>
    </div>
</div>

нам нужно немного больше информации, чем "не работает". Какую отладку вы сделали? Если код не делает то, что вы хотите, какой делает он делает? Ошибки? Неожиданное поведение? Просьба уточнить

ADyson 07.02.2019 18:14

В основном мне нужно нацелить var current_title = $(document).attr('title'); на object[i].Title в DomyApiCalls. $(document).attr('title'); не дает мне имя папки.

user9727963 07.02.2019 18:15

а? Какое это имеет отношение к вашему модальному? Вы тут отдельную проблему описываете, что ли?

ADyson 07.02.2019 18:15

Потому что, когда заголовок соответствует «Acuvue», это должно вызвать функцию getModal(), я надеюсь.

user9727963 07.02.2019 18:16

ну, вы не показали нам соответствующий HTML, поэтому мы понятия не имеем, правильно ли вы его определили. Также неясно, какое отношение он имеет к коду внутри DoMyApiCalls.

ADyson 07.02.2019 18:17

Таким образом, то, что у меня сейчас есть, заключается в том, что функция getModal() будет вызываться, а filesHtml будет вызываться и добавляться к .Modalbody.

user9727963 07.02.2019 18:18

Я это понимаю, но вы спрашиваете, почему $(document).attr('title'); не содержит правильного значения. Я не могу вам этого сказать, потому что не вижу соответствующего HTML-кода вашей страницы.

ADyson 07.02.2019 18:19

Если честно, если вы хотите получить заголовок страницы, вам не нужен jQuery. document.title отлично справится с этой задачей.

ADyson 07.02.2019 18:20

Извините, это сбивает с толку, я обновил скриншот выше. Поэтому вместо заголовка страницы мне нужно настроить таргетинг на FolderName из DoMyApiCalls.

user9727963 07.02.2019 18:21

В порядке. И прежде чем вы упомянули, что имя папки находится в пределах object[i].Title, верно? Таким образом, в обратном вызове DoMyApiCalls вы можете написать getModal(object[i].Title); и таким образом открыть модальное окно. Единственная проблема, которую я вижу, заключается в том, что в object может быть много элементов. И я думаю, вы не хотите открывать модальное окно для всех сразу? Они просто перезаписывали друг друга. Ранее вы упомянули о реакции на щелчок по изображению. Это изображения, созданные в строке $('#' + elementId).append... в рамках обратного вызова, на которые вы хотите обработать нажатие? Эта часть мне до сих пор не ясна

ADyson 07.02.2019 21:42

Это правильно, добавление elemendId создает ящики и дает им специальные идентификаторы, которые я хотел связать с модальным «числом». Скажем так, каждое окно будет открывать модальное окно, но содержимое этого модального окна будет извлекаться из разных папок в библиотеке документов SharePoint. Окно «Acuvue» откроет папку «Acuvue» в библиотеке и отобразит все содержимое в модальном окне.

user9727963 07.02.2019 21:49

Итак, первое, что вам нужно сделать, это прикрепить событие «щелчок» к каждому полю. В событии клика вы затем вызываете «getModal» с правильным идентификатором. Поскольку вы знаете идентификатор только что созданного поля, вы можете довольно легко создать для него уникальный обработчик кликов. Знаете ли вы, как создать обработчик события «клик» с помощью jQuery?

ADyson 07.02.2019 22:05

Я не знаю, но я проведу небольшое исследование в Интернете, чтобы посмотреть, что я могу найти.

user9727963 07.02.2019 22:10
api.jquery.com/click было бы разумным местом для начала :-)
ADyson 07.02.2019 22:10
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
14
102
0

Другие вопросы по теме