Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jquery或javascript中为每条记录显示一个数据_Javascript_Jquery_Arrays - Fatal编程技术网

在jquery或javascript中为每条记录显示一个数据

在jquery或javascript中为每条记录显示一个数据,javascript,jquery,arrays,Javascript,Jquery,Arrays,嗨,伙计们,我怎么能只显示一次数据,不像我附加的屏幕截图 我通过在地图上相应的标记上悬停来显示数据 嗨,我已经更新了我的代码,以便更好地了解我现在拥有的东西 这是我的最新代码 HTML 我的Javascript function displayData(e) { var html = ''; var html2 = ''; var notice = ''; var mapDiv = document.getElementById('mapContainer'), i = 0,

嗨,伙计们,我怎么能只显示一次数据,不像我附加的屏幕截图 我通过在地图上相应的标记上悬停来显示数据

嗨,我已经更新了我的代码,以便更好地了解我现在拥有的东西

这是我的最新代码

HTML

我的Javascript

function displayData(e)
{
  var html = '';
  var html2 = '';
  var notice = '';
  var mapDiv = document.getElementById('mapContainer'), i = 0,
     dataIndex, tooltipDiv, key
  mapMarkers = $(mapDiv).find('.e-mapMarker'), index = 0;
  for (i = 0; i < mapMarkers.length; i++) {
    if (e.target.parentNode.parentNode == mapMarkers[i])
    {
        index = i;
        break;
    }
}
html += '<div id="infocontainer">';
html += '<div class="p-image"><img src="src/images/retrofit.png"/></div>';
html += '<div class="popupdetail">';
html += '<div class="p-name"> Site Name: ' + flsSites[index].site_name + '</div>';
html += '<div class="p-name"> Site Status: ' + flsSites[index].status + '</div>';
html += '<div class="p-name"> Country: ' + flsSites[index].country_name + '</div>';
html += '</div>';
html += '</div>';

`html2 += '<div class="rightcontainer" onclick="DisplayProfileCard();">';
html2 += '<img id="productimage" src="src/images/retrofit.png"/>';
html2 += '<div id="imagedetail">';
html2 += '<span class="details">Product Type</span>';
html2 += '<span class="details">Version / Size</span>';
html2 += '<span class="details">Estimated annual Spend</span>';
html2 += '<span class="details">Site name / manufacturer</span>';
html2 += '<span class="details">Selling Sales Eng</span>';
html2 += '</div>';
html2 += '</div>';`

if (!document.getElementById('map_tooltip')) {
    tooltipdiv = $("<div></div>").attr('id', "map_tooltip");
    $(document.body).append(tooltipdiv);
    $(tooltipdiv).css({
        "display": "block", "padding": "5px",
        "position": "absolute",
        "z-index": "13000",
        "cursor": "default",
        "font-family": "Segoe UI",
        "color": "#707070",
        "font-size": "12px", "pointer-events": "none",
        "background-color": "#FFFFFF",
        "border": "1px solid #707070"
    });
}
else
{
    tooltipdiv = $("#map_tooltip");
    $(tooltipdiv).css({
        "left": (e.pageX + 5),
        "top": (e.pageY + 5)
    });
    $(tooltipdiv).html(html).show("slow");
    $('#searchcontainer').innerHTML = "";
    //$('#defaulttext').hide();
    $('#searchcontainer').append(html2);
    $('.rightcontainer').eq($(this).index()).addClass('background');
}

显示和隐藏并没有太大区别,添加背景色你们会看到,如果不让我知道,我可以尽可能多地解释我知道的

$'.first>ul>li.mouseenterfunction{ $'.second>ul>div.eq$this.index.addClass'background'。删除类'invisiblediv'; }.鼠标移动功能{ $'.second>ul>div.eq$this.index.removeClass'background.addClass'invisiblediv'; } .第一,.第二{ 显示:内联块; } .first>ul>li{ 宽度:50px; 背景色:fff; 文本对齐:居中; } .first>ul>li:悬停{ 背景色:ff5722; } 李{ 列表样式类型:无; } .背景{ 背景色:红色; } .看不见{ 可见性:隐藏; } img{ 宽度:50px; } 1. 2. 3.
如果我理解正确,您需要一种机制来允许悬停处理程序displayData知道之前是否为悬停元素创建了.rightcontainer

最简单的方法是利用jQuery的.data在创建每个.rightcontainer时保留对其的引用。因此,下一轮还有一些东西需要测试

我已经对所有的代码进行了很好的修改,以使它变得更好,尽管不能保证我没有引入错误

function displayData(e) {
    var mapMarkers = $('#mapContainer .e-mapMarker').get(),
        $tooltipDiv = $('#map_tooltip'),
        grandParent = e.target.parentNode.parentNode,
        flsSite = flsSites[mapMarkers.indexOf(grandParent)],
        $searchcontainer = $('#searchcontainer');

    if(!flsSite) return; // probably?

    // Create tooltip if it doesn't already exist.
    if ($tooltipdiv.length === 0) {
        $tooltipdiv = $('<div id="map_tooltip">' +
            '<div id="infocontainer">' +
            '<div class="p-image"><img src="src/images/retrofit.png"/></div>' +
            '<div class="popupdetail">' +
            '<div class="p-name site"> Site Name: <span></span></div>' +
            '<div class="p-name status"> Site Status: <span></span></div>' +
            '<div class="p-name country"> Country: <span></span></div>' +
            '</div></div></div>').css({
            'display': 'block',
            'position': 'absolute',
            'z-index': '13000',
            'padding': '5px',
            'border': '1px solid #707070',
            'cursor': 'default',
            'pointer-events': 'none',
            'font-family': 'Segoe UI',
            'font-size': '12px',
            'color': '#707070',
            'background-color': '#FFFFFF'
        }).appendTo(document.body);
    }

    // Surely, the code below needs to be executed whether the tooltipdiv is freshly created or not, therefore shouldn't be in an else block. 
    $tooltipdiv.find('.site span').text(flsSite.site_name).end()
        .find('.status span').text(flsSite.status).end()
        .find('.country span').text(flsSite.country_name).end()
        .css({ 'left': e.pageX + 5, 'top': e.pageY + 5 })
        .show('slow');

    // If a previously created rightcontainer doesn't exist, then create one and keep a reference to it.
    if(!$(this).data('rightCont')) {
        $(this).data('rightCont', $('<div class="rightcontainer">' +
        '<img id="productimage" src="src/images/retrofit.png"/>' +
        '<div id="imagedetail">' +
        '<span class="details">Product Type</span>' +
        '<span class="details">Version / Size</span>' +
        '<span class="details">Estimated annual Spend</span>' +
        '<span class="details">Site name / manufacturer</span>' +
        '<span class="details">Selling Sales Eng</span>' +
        '</div></div>').on('click', DisplayProfileCard).appendTo($searchcontainer));
    }

    // Unhighlight all rightcontainers and highlight the current one, whether it was made earlier or just now.
    $searchcontainer.find('.rightcontainer').removeClass('background');
    $(this).data('rightCont').addClass('background');
}

只测试解析错误

你好,凯尔,你能在fiddle@MunkhdelgerTumenbayar不幸的是,我无法在jsfiddle上实现它,因为在我们的办公室有一些奇怪的技术困难blocked@Kyle由于JSFIDLE被阻止,您能创建一个代码段吗?Stackoverflow允许您创建代码段。你可以在问题编辑器的工具栏或窗口中找到相应的按钮,你可以按CTRL+M。@MunkhdelgerTumenbayar还记得我之前问的问题吗?在div1中鼠标悬停,然后在div2中突出显示相应的项目?这个问题和这个问题是并驾齐驱的,所以总的来说,你可以在地图上的一个标记上鼠标悬停然后它将显示在div2中,但不是高亮显示,而是再次显示,而不是高亮显示it@Kyle如果我理解正确的话,当我在div1上鼠标悬停时,对应的div2将从隐藏中显示?有太多的操作要做,我正在使用选择器添加和删除类@Munkhdelger Tumenbayar这次我尝试了你的代码但是,假设附加的文件是Highlite all,而不是一次突出显示一个项目$'searchcontainer'.appendhtml2.eq$this.index.addClass'background'@kyle i在div内为img编辑,在mouseenter上可见。mouseout将绝对隐藏imgjust对我的代码进行更新它与您的不一样例如我将鼠标悬停在1上它高亮显示1在我的情况下我将鼠标悬停在数字1上它显示并高亮显示1这是确定的,但如果我将鼠标悬停在数字2上,它将显示数字2,但它高亮显示数字1而不是number2@Kyle把所有的html和js都放到它不工作的地方什么也没发生我来试试你在哪里得到了rightCont你在var$rightCont中使用的是div或id的类吗?“rightCont”是一个任意名称。我犯了一个错误-目前在手机上-将在我回到桌面计算机时更正。现在它正常工作,但它实际上只显示一条记录,而不是每条记录显示一条记录。如果可能,我如何在前一条记录的下方渲染另一条记录?rightContainer div仅附加到searchContainer,从未删除。我能看到的唯一会导致它们消失的是一些CSS指令。
function displayData(e) {
    var mapMarkers = $('#mapContainer .e-mapMarker').get(),
        $tooltipDiv = $('#map_tooltip'),
        grandParent = e.target.parentNode.parentNode,
        flsSite = flsSites[mapMarkers.indexOf(grandParent)],
        $searchcontainer = $('#searchcontainer');

    if(!flsSite) return; // probably?

    // Create tooltip if it doesn't already exist.
    if ($tooltipdiv.length === 0) {
        $tooltipdiv = $('<div id="map_tooltip">' +
            '<div id="infocontainer">' +
            '<div class="p-image"><img src="src/images/retrofit.png"/></div>' +
            '<div class="popupdetail">' +
            '<div class="p-name site"> Site Name: <span></span></div>' +
            '<div class="p-name status"> Site Status: <span></span></div>' +
            '<div class="p-name country"> Country: <span></span></div>' +
            '</div></div></div>').css({
            'display': 'block',
            'position': 'absolute',
            'z-index': '13000',
            'padding': '5px',
            'border': '1px solid #707070',
            'cursor': 'default',
            'pointer-events': 'none',
            'font-family': 'Segoe UI',
            'font-size': '12px',
            'color': '#707070',
            'background-color': '#FFFFFF'
        }).appendTo(document.body);
    }

    // Surely, the code below needs to be executed whether the tooltipdiv is freshly created or not, therefore shouldn't be in an else block. 
    $tooltipdiv.find('.site span').text(flsSite.site_name).end()
        .find('.status span').text(flsSite.status).end()
        .find('.country span').text(flsSite.country_name).end()
        .css({ 'left': e.pageX + 5, 'top': e.pageY + 5 })
        .show('slow');

    // If a previously created rightcontainer doesn't exist, then create one and keep a reference to it.
    if(!$(this).data('rightCont')) {
        $(this).data('rightCont', $('<div class="rightcontainer">' +
        '<img id="productimage" src="src/images/retrofit.png"/>' +
        '<div id="imagedetail">' +
        '<span class="details">Product Type</span>' +
        '<span class="details">Version / Size</span>' +
        '<span class="details">Estimated annual Spend</span>' +
        '<span class="details">Site name / manufacturer</span>' +
        '<span class="details">Selling Sales Eng</span>' +
        '</div></div>').on('click', DisplayProfileCard).appendTo($searchcontainer));
    }

    // Unhighlight all rightcontainers and highlight the current one, whether it was made earlier or just now.
    $searchcontainer.find('.rightcontainer').removeClass('background');
    $(this).data('rightCont').addClass('background');
}