删除按钮时';s单击的javascript

删除按钮时';s单击的javascript,javascript,html,highcharts,Javascript,Html,Highcharts,我有一些代码,当一条线被添加到图表中时,它会创建一个按钮。单击按钮时,我想从图表中删除该行并删除该按钮。可以查看该示例 也就是说,成功添加按钮的代码是: function getChartData(option){ var category = $('#category').val(); var option = option.value; var seriesTitle = category+option; $.ajax({ url: "getD

我有一些代码,当一条线被添加到图表中时,它会创建一个按钮。单击按钮时,我想从图表中删除该行并删除该按钮。可以查看该示例

也就是说,成功添加按钮的代码是:

function getChartData(option){
    var category = $('#category').val();
    var option = option.value;
    var seriesTitle = category+option;
    $.ajax({
        url: "getData.php?action=getChartData",
        type: "GET",
        dataType:"json",
        data: {
            category:category,
            option:option
        },
        success: function(json){
            chart.addSeries({
                name: seriesTitle,
                data : []
            });
            $.each(json.Data,function(){   
                chart.series[chart.series.length-1].addPoint([parseFloat(this.Year), parseFloat(this[option])]);
            });
        }

    });
    var series = document.createElement('button');   
    series.onclick = function(){
        removeLine(seriesTitle);
    }
    series.setAttribute('id',seriesTitle);
    series.innerHTML=seriesTitle;
    $('#removeLine').append(series);

} 
然后单击按钮时,此代码不会执行任何操作:

function removeLine(seriesTitle){
    chart.series[seriesTitle].remove();
    $(seriesTitle).remove();
}
错误是:

Uncaught TypeError: Cannot call method 'remove' of undefined
removeLine    oil.js:172
series.onclick
任何人如果知道我如何根据一个变量调用高图中的某一行,都可以获得加分,例如,这是有效的:

chart.series[chart.series.length-1].remove();
这并不是:

chart.series[seriesTitle].remove();

我认为问题出在线路上

        seriesTitle = chart.addSeries({
            name: seriesTitle,
            data : []
        });
seriesttle
这里指的是由创建的
seriesttle

var seriesTitle = category+option;
并覆盖其值。我猜
addSeries
正在返回一个对象或
未定义的
seriestle
将此值传递给
removeLine
,并将其用作数组
图表.series
的键

尝试删除那里的赋值(看起来您确实不想要它),或者只是在它前面加上var(它将成为匿名函数的本地变量)。

如果您对
chart.series
的键值对不确定,请将其传递到
console.log()
,然后您可以检查它,查看您的键应该是什么样子(以及值是什么)。

当您使用
chart.series[something].remove()时“某物”必须是序列位置,如您所见。因此,必须通过参数传递位置。这就是为什么
chart.series[0].remove()有效。

因此,如果你想解决这个问题,你可以在删除前根据标题找到意甲位置,如下所示。

function removeLine(seriesTitle){
    for(var postion = 0; position < chart.options.series.length; position++) {
        if(chart.options.series[position].name == seriesTitle) {
            chart.options.series[position].remove();
            break;
        }
    }
}
要解决删除按钮时出现的问题,必须添加哈希标记,如下所示:

$('#' + seriesTitle).remove();
因此,您的功能如下:

function removeLine(seriesTitle){
    for(var postion = 0; position < chart.options.series.length; position++) {
        if(chart.options.series[position].name == seriesTitle) {
            chart.options.series[position].remove();
            break;
        }
    }
    $('#' + seriesTitle).remove();
}
功能移除行(序列){
对于(变量位置=0;位置
在inspector
SerieStle
中显示为一个对象,看起来您正试图将其用作字符串。谢谢,我现在已经删除了该字符串,我认为该字符串正在传递给removeLine函数,但该按钮没有被删除。谢谢,我尝试删除了有关删除该行的位,现在虽然没有出现错误,单击按钮时不会发生任何事情。例如,这不起任何作用:函数removeLine(seriesTitle){$(seriesTitle).remove();}不起任何作用。啊,很棒的东西,你提供的第一个解决方案是有效的。但它应该是chart.series[position].name,而不是chart.options。。。。非常感谢。过一会儿我会给你打勾,但还是有一个问题,那就是把按钮取下来。seriesTitle正在传递给removeLine函数,但此代码$(seriesTitle).remove()没有删除按钮。
function removeLine(seriesTitle){
    for(var postion = 0; position < chart.options.series.length; position++) {
        if(chart.options.series[position].name == seriesTitle) {
            chart.options.series[position].remove();
            break;
        }
    }
    $('#' + seriesTitle).remove();
}