如何更改在不同函数中创建的textNode

How to change a textNode created in a different function

本文关键字:创建 textNode 函数 何更改      更新时间:2023-09-26

我正在做一个简单的显示/隐藏脚本,其中有两段隐藏的文本。在createTextNode的帮助下,我创建了2个"阅读更多"链接。我的问题是,一旦链接被点击,隐藏的文本显示出来,链接文本"阅读更多"就会变为"隐藏",当我点击"隐藏"时,它应该会变回"阅读更多。"。但我似乎找不到更改nodeValue的正确方法,可能是因为我试图从第二个函数"hideShow"访问节点。

还有一个较小的问题。当我在头中放置链接时,我无法使脚本工作,只有当我在结束标记之前放置链接时。我知道这是一个更好的方法,但是,为什么它不起作用?和窗户有什么关系?

谢谢你的帮助!

这是我的代码:

window.onload = hideText(); 
function hideText() { // Function to hide text and create links
    if (document.getElementsByClassName) { // Check if browser understands method
        var hideElement = document.getElementsByClassName("show"); // Get all elements with class "show" and add in array "hideElement"
        for (var i=0; i < hideElement.length; i++) {
            var link = document.createElement("a"); // Create link for all class "show" elements
            hideElement[i].parentNode.insertBefore(link, hideElement[i]); // Putting links before hidden element
            link.appendChild(document.createTextNode("Read more")); // Give links a textNode child
            link.setAttribute("href", "#"); 
            link.onclick = (function(element) { //When click on link function hideShow
                return function() { hideShow(element); };
            })(hideElement[i]);     
            hideElement[i].style.display = "none"; // If no link click element with class "show" is hidden
        }
    }
} 
function hideShow(element)
{   
    if (element.style.display == "none") {  
        element.style.display = "block";    
        for (var i=0; i<link.length; i++) {     
        link.firstChild.nodeValue = "Hide";
        }   
    }
    else {
        element.style.display = "none";     
    }
}

上的工作示例http://jsfiddle.net/TxWQE/

函数hideText()

function hideText()中,您应该更改

link.onclick = (function(element) { //When click on link function hideShow
    return function() { hideShow(element); };
})(hideElement[i]);  

进入

link.onclick = (function(element, link) { //When click on link function hideShow
    return function() { hideShow(element, link); };
})(hideElement[i], link);

函数hideShow(元素)

CCD_ 2函数应该是

function hideShow(element, link)
{
    if (element.style.display == "none") {  
        element.style.display = "block";    
        link.innerHTML = "Hide";
    }
    else {
        element.style.display = "none";
        link.innerHTML = "Read more";
    }
}