【问题标题】:jQuery and generated SVG Polygons - creating loop to give each polygon a unique class?jQuery 和生成的 SVG 多边形 - 创建循环给每个多边形一个独特的类?
【发布时间】:2014-01-14 13:41:22
【问题描述】:

基本的 Javascript/jQuery 技能让我望而却步,我使用生成器创建了这个 svg 十六进制网格 http://francescasargent.co.uk/blogosphere/playground/hexagons4.html。如果您查看源代码(此处复制和粘贴太长!)大约有 112 个多边形。我试图给每个多边形一个唯一的类,简单的“pg-”,然后是一个 1-112 的数字,以便进一步工作。但我已经被难住了。作为测试,我正在尝试遍历多边形并将 svg 文本更改为每个单独多边形的数量(稍后将更改为 addClass)。此代码导致每个 svg 文本项中的数字为“111”,而不是循环遍历并为它们分配不同的升序数字。我做错了什么?

$( document ).ready(function() {

polygons = $('polygon').length;

for(i=0; i<polygons;i++) {

$('polygon').each(function(i, obj) {
    $('text').text('fap'+[i]);
}); 
}
});

【问题讨论】:

    标签: javascript jquery svg polygon


    【解决方案1】:

    您没有使用唯一的文本,而是选择了所有文本并提供相同的文本。按照下面的代码为多边形提供文本

    var x = 0;
    $('text').each(function () {
        $(this).text("text" + x++)
    });
    

    要为每个多边形赋予唯一的类,请遵循以下代码

    var i = 0;
    $('polygon').each(function () {
        $(this).addClass('pg-' + i++);
    });
    

    更新

    addClass 似乎不适用于 SVG 元素,因此请改用 .attr

    var i = 0;
    $('polygon').each(function () {
        $(this).attr('class', function () {
            return this.className + " pg-" + i++
        });
    });
    

    注意:循环中不需要循环

    【讨论】:

    • 问题 - 在我的源代码中,添加的类会出现在 HTML 中吗?所以,
    • @user3015175 会的
    • 不幸的是,上述代码或以下答案中的代码并未更改该类:view-source:francescasargent.co.uk/blogosphere/playground/hexagons4.html
    • @user3015175 我没有看到你使用链接中的代码,复制粘贴解决方案以在控制台中将类添加到多边形,你会看到元素类属性发生变化
    • 'var i = 0; $('polygon').each(function () { $(this).addClass('pg-' + i++); }); ' ?可能我的上传有冲突
    【解决方案2】:

    问题出在这里:

    for(i=0; i<polygons;i++) {
        $('polygon').each(function(i, obj) {
            $('text').text('fap'+[i]);
        });
    

    无需包含for。它将每次循环并更改文本,直到达到 n-1 即 111。最后一次迭代将为每个多边形中的所有多边形提供“111”。

    您可以简单地将每个与索引一起使用:

    $('polygon').each(function (index) {
        $(this).text("text" + index)
    })
    

    另外,请注意,您应该在.each 内部使用$(this) 来定位当前元素,然后更改其text

    【讨论】:

    • @Anton:谢谢。对不起,我没有注意到你打败了我。为什么我要花这么多时间打字:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多