Мне нужно передать объект json в функцию, как указано ниже в href, но этот код JS не оценивается. Так может ли кто-нибудь предложить обходной путь или решение для этого?
function function_test(option,jsonObj){
displayMessage(str);
}
function function_prepare_div(){
var str = "";
var jsonResposneObj = getJson();//function to get jsonResponseObj
for(i=0;i<jsonResponseObj.length;i++){
str += "<a href='function_test( " + i + "," + jsonResposneObj.dataObj[i] +")'>1. " + jsonResposneObj.dataObj[i].objName + "</a></br>";
}
return str;
}
P.S. Я не могу вернуть jsonResponse после вызова функции.
Что означает передать объект в функции href? Покажите нам весь соответствующий код.
Я добавил код в редактирование, проверьте это. Я обновляю div на странице html динамически сгенерированным контентом и передаю объект JSON, полученный в ответ на соответствующий вызов функции.
Почему вы хотите это сделать? Вы хотите передать результатfunction_test() в атрибут href?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вместо использования встроенного JS добавьте элемент, используя соответствующие методы DOM, а затем прикрепите прослушиватель событий.
Например, что-то вроде
const a = container.appendChild(document.createElement('a'));
a.href = function_test(1, jsonResponse);
a.textContent = '1. ' + function_test(1, jsonResponse);
(убедитесь, что function_test возвращает URL)
Функции (или любой JavaScript в этом отношении) вообще не принадлежат <a href = "">.
Гиперссылки предназначены для навигации, а не для хуков JavaScript. Использование их только для запуска некоторого JavaScript - неправильное использование тега <a>. Это было обычным явлением 20 с лишним лет назад (до появления веб-стандартов), но сегодня оно ужасно устарело и совершенно неверно. Использование гиперссылки для запуска JavaScript семантически некорректно и может вызвать проблемы у людей, которые используют вспомогательные технологии (например, программы чтения с экрана) для навигации по странице.
Практически любой элемент, который действителен в body веб-страницы, поддерживает событие click, и большинство из них лучше подходят для того, что вы хотите сделать.
Что вам нужно сделать, так это зарегистрировать вашу функцию как обратный вызов для события click некоторого элемента, например:
// An example of a JSON response
var jsonResponse = '{"key1":10,"key2":true,"key3":"foo"}';
// Get reference to any element that supports a click event that
// can be safely used as a JavaScript trigger
var span = document.getElementById("fakeLink");
// Set up an event handling callback function for the click event of the element
span.addEventListener("click", function(){
// Call the function and pass it any arguments needed
processJSON(1, jsonResponse, this);
});
// Do whatever you need to do in this function:
function processJSON(val, json, el){
console.info(val, json);
el.textContent = val + json;
}/* Make element look & feel like a hyperlink */
#fakeLink { cursor:pointer; text-decoration:underline; }
#fakeLink:active { color:red; }<span id = "fakeLink">Click Me</span>var json = {
foo: 'bar'
};
var func = function(data) {
alert(data.foo);
}
$('body').append("<button onclick='func(" + JSON.stringify(json) + ")'>BUTTON</button>");<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
что такое function_test, и вы помещаете это в href?