简体   繁体   English

javascript onmouseout清除html元素

[英]javascript onmouseout clear html element

I am trying to figure out how to clear the contents of a specific HTML ID on a JavaScript onmouseleave event. 我试图弄清楚如何清除JavaScript onmouseleave事件上特定HTML ID的内容。 My onmouseover works perfectly fine but onmouseout doesn't. 我的onmouseover效果很好,但是onmouseout却不能。

This is a navigation bar (work in progress) so when the user hovers their mouse over a header, it will then expose the sub links but when they leave that menu, it should close. 这是一个导航栏(正在进行中),因此当用户将鼠标悬停在标题上时,它将显示子链接,但是当他们离开该菜单时,它应该关闭。

Everything that i've reseached has led me to nothing...I'm looking for hints on how to complete the onmouseout function for this scenario. 我研究的所有内容都使我一无所获...我正在寻找有关如何完成此方案的onmouseout函数的提示。

Thanks! 谢谢!

Here's what I've got: 这是我得到的:

     document.getElementById('theHeaderTag1').onmouseover = function () {
    for (var i = 0; i <= Level1Items.length - 1; i++) {
        //Print Items in Level1
        var createLevel1CellTag = document.createElement('tr');
        createLevel1CellTag.id = 'Level1';
        var Level1TextNode = document.createTextNode(Level1Items[i]);
        createLevel1CellTag.appendChild(Level1TextNode);
        document.getElementById('theHeaderTag0').appendChild(createLevel1CellTag);
    }
    document.getElementById('theHeaderTag1').onmouseout = function () {

    }

I have a feeling that I'm going to run into issues with this though...but I think this will put me on the right track. 我有种感觉,尽管我会遇到一些问题……但是我认为这将使我走上正确的道路。

Here's all the code: 这是所有代码:

var siteUrl = '/sites/dev/';
var theCounter = 0;
ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js");

function retrieveListItems() {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle('myList');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml("<Where><And><IsNotNull><FieldRef Name='Title' /></IsNotNull> <IsNotNull><FieldRef Name='TitleLink' /></IsNotNull></And></Where>");
this.collListItem = oList.getItems(camlQuery);
clientContext.load(collListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded),  Function.createDelegate(this, this.onQueryFailed));
 }


//Where all the magic happens
function onQuerySucceeded(sender, args) {

//Create an Array for each column in the SharePoint List that will be used in the NavPart
var theHeaders = new Array();
var HeaderLinks = new Array();
var Level1Items = new Array();
var getTheTableTag = document.getElementById('theTable');

var listItemEnumerator = collListItem.getEnumerator();

while (listItemEnumerator.moveNext()) {
    var oListItem = listItemEnumerator.get_current();
    theCounter += 1;

    //Build an Array for the column elements.
    theHeaders[theCounter - 1] = oListItem.get_item('Title');
    Level1Items[theCounter - 1] = oListItem.get_item('Level1');



};
var headersResult = _.uniq(theHeaders);
var headerLinkResult = _.uniq(HeaderLinks);

//Create Headers on the Web Part
for (var i = 0; i <= headersResult.length - 1; i++) {
    var createTheHeaderTag = document.createElement('th');
    createTheHeaderTag.id = 'theHeaderTag' + i;
    var TheHeaderTagTextNode = document.createTextNode(headersResult[i]);
    createTheHeaderTag.appendChild(TheHeaderTagTextNode);
    getTheTableTag.appendChild(createTheHeaderTag);


}

document.getElementById('theHeaderTag1').onmouseover = function () {
    for (var i = 0; i <= Level1Items.length - 1; i++) {
        //Print Items in Level1
        var createLevel1CellTag = document.createElement('tr');
        createLevel1CellTag.id = 'Level1';
        var Level1TextNode = document.createTextNode(Level1Items[i]);
        createLevel1CellTag.appendChild(Level1TextNode);
        document.getElementById('theHeaderTag0').appendChild(createLevel1CellTag);
    }
    document.getElementById('theHeaderTag1').onmouseout = function () {

    }
}
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

The Code looks fine. 该代码看起来不错。 You need to remove or hide the DOM elements on mouseout. 您需要在mouseout上删除或隐藏DOM元素。

EDIT-> Demo : http://jsfiddle.net/uENE7/ 编辑->演示: http : //jsfiddle.net/uENE7/

document.getElementById('theHeaderTag1').onmouseout = function () {
   document.getElementById('theHeaderTag0').removeChild("Level1")
}

To check whether your mouseout event is triggered, please add a console log message. 要检查是否触发了mouseout事件,请添加控制台日志消息。

document.getElementById('theHeaderTag1').onmouseout = function () {
   console.log("mouseout event triggered");
   document.getElementById('theHeaderTag0').removeChild("Level1");
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM