Aloklok 2015-08-07 11:56 采纳率: 0%
浏览 577

创建abbr标签title的显示列表

如图,请问哪一个实现方法更好?
方法1是书本上的,但是感觉它是不是复杂化了呢?或者说有没有更好的方法?求指点。图片说明图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 04:21
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在JavaScript中,我们可以使用getElementsByTagName()函数来获取所有符合条件的元素。然后,我们可以遍历这些元素并为每个元素创建一个<dt><dd>元素,并将它们添加到<dl>元素中。

    以下是两种不同的实现方法:

    方法1: 使用 getElementsByTagName()appendChild()

    function displayAbbreviation() {
        var abbreviations = document.getElementsByTagName('abbr');
        var list = document.createElement('dl');
    
        for (var i = 0; i < abbreviations.length; i++) {
            var key = abbreviations[i].lastChild.nodeValue;
            var value = abbreviations[i].getAttribute('title');
            
            var listHead = document.createElement('dt');
            listHead.appendChild(document.createTextNode(key));
            
            var listContent = document.createElement('dd');
            listContent.appendChild(document.createTextNode(value));
    
            list.appendChild(listHead);
            list.appendChild(listContent);
        }
    
        var para = document.getElementsByTagName('p')[0];
        insertAfter(list, para);
    
        addLoadEvent(displayAbbreviation);
    }
    
    function insertAfter(elementToInsert, referenceElement) {
        var parent = referenceElement.parentNode;
        if (!parent) return;
    
        var nextNode = referenceElement.nextSibling;
        if (!nextNode) {
            parent.appendChild(elementToInsert);
        } else {
            elementToInsert.parentNode.insertBefore(elementToInsert, nextNode);
        }
    }
    

    方法2: 使用 getElementsByTagName()createTextNode()appendChild()

    function displayAbbreviation() {
        var abbreviations = document.getElementsByTagName('abbr');
        var list = document.createElement('dl');
    
        for (var i = 0; i < abbreviations.length; i++) {
            var key = abbreviations[i].lastChild.nodeValue;
            var value = abbreviations[i].getAttribute('title');
            
            var listHead = document.createElement('dt');
            listHead.appendChild(createTextNode(key));
    
            var listContent = document.createElement('dd');
            listContent.appendChild(createTextNode(value));
    
            list.appendChild(listHead);
            list.appendChild(listContent);
        }
    
        var para = document.getElementsByTagName('p')[0];
        insertAfter(list, para);
    
        addLoadEvent(displayAbbreviation);
    }
    
    function createTextNode(text) {
        var node = document.createTextNode(text);
        return node;
    }
    

    这两种方法都可以正确地将abbr标签中的值显示出来。你可以根据自己的需求选择合适的方法。

    评论

报告相同问题?

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,