Я не использовал эту библиотеку, но с помощью PHP Simple HTML DOM Parser , вы можете использовать этот код, чтобы попытаться добавить функции:
//array containing your functions names
$functions = array(test1, test2);
//Parse the string to get the HTML DOM
$html = str_get_html($str);
//Retrieve the array of anchors
$links = $html->find('a');
//Loop through the anchors and add the onclick events
for($i=0;$i<count($links);$i++){
$links[$i]->onclick = $functions[$i];
}
//return the html to the string
$html->save();
YouВероятно, придется немного его протестировать и изменить, чтобы он мог перейти в ваш процесс.
РЕДАКТИРОВАТЬ: Чтобы адаптировать это решение для использования ненавязчивого JavaScript, вы можете заменить $links[$i]->onclick
на $links[$i]->id
, а затем добавьте eventHandler с помощью javascript:
//Add an event listener that will trigger when the content of the page is loaded
document.addEventListener("DOMContentLoaded", function() {
var i;
//retrieve all the anchors
var link = document.getElementsByTagName("a");
//Loop through the anchors
for(i=0; i<links.length; i++){
//If the anchor has an id
if(links[i].id){
//retrieve the function
var myFuncName = links[i].id;
var myFunction = window[myFuncName];
//add the event listener
links[i].addEventListener("change", myFunction, false);
}
}
}, false);
Важно получить функцию, как это было сделано здесь, поскольку links[i].id
является строкой, а addEeventListener не будет 'Я работал со строкой вместо функции.Так как window.function
совпадает с window['function']
, это делает преобразование превосходным.
Как и в случае с PHP-кодом, это может быть объектом для изменения в зависимости от вашей среды.Например, если все якоря, которым нужен onchange
eventHandler, находятся под тегом div
с идентификатором "mylinks", вы можете изменить document.getElementsByTagName("a");
на document.getElementById("mylinks).getElementsByTagName("a");
.