わかりましたので、私はこれに取り組んできましたが、少し助けを求めることにしました。
ID の show1 と show2 を持つ 2 つの段落があります。
それぞれの上にあるリンクをクリックすると展開される短いテキストがあります。
私の関数は展開したり折りたたんだりするように機能しますが、リンクの値、より正確には、「リンクがnull」になるため、リンクテキストを取得できないように感じます。
それは var status と innerHTML までずっと機能します。これらの 2 行をコメントアウトすると機能します。リンク テキストを表示から非表示に変更することはありません。感謝。
/* Function created by "Simon Willson" to be able to
call several functions with a single event */
//Create the function
function addLoadEvent(func) {
//Create a variable for window.onload event
var oldonload = window.onload;
//If window.onload is NOT a function, then assign 'func' to window.onload
if (typeof window.onload != 'function') {
window.onload = func;
//If window.onload already is a function then make a new function
} else {
window.onload = function() {
//To do what the old onload function did
if (oldonload) {
oldonload();
}
//then do whatever the new function does
func();
}
}
}
function newLink() {
//Make a few safety check to see if the browser can handle the elements
if (!document.getElementById) {
if (!document.createElememt) {
if (!document.createTextNode) {
return false;
}
}
}
//Create the link
newLinkElement = document.createElement('a');
//Give the link a Id
newLinkElement.id = 'show1_link';
//Set the href
newLinkElement.href = "javascript:showHide(this.id,'show1')";
//Create a variable for the link text
var linkText = document.createTextNode('Visa mera information');
//Append the text to the link
newLinkElement.appendChild(linkText);
//Create a variable for the paragraph
var elem = document.getElementById('show1')
//Insert the text before the paragraph with the Id show1
elem.parentNode.insertBefore(newLinkElement,show1);
}
addLoadEvent(newLink);
function showHide(link_id,elemId) {
var link = document.getElementById(link_id);
var text = document.getElementById(elemId);
text.style.display = (text.style.display == 'block') ? 'none' : 'block';
var status = (text.style.display == 'block') ? 'none' : 'block';
text.style.display = status;
link.innerHTML = (status == 'block') ? 'Dölj information' : 'Visa mera information';
}