0

我刚刚开始编程,不知何故无法为以下问题提出任何明智的方法,因此将不胜感激任何帮助!我有一个结构如下的 .html 文件:

<head>
<title>ABC</title>
</head>
<body>
<div class="norm">
...    
<span class="jnenbez">13</span>
....    
<div class="Absatz">text</div>
<div class="Absatz">text</div>
<div class="Absatz">CITE HERE**</div>

“规范” div 是一个父节点。“jnenbez”跨度和“Absatz”div 位于“norm”div 内,但它们的嵌套深度可能会有所不同。现在我要引用“CITE HERE”区域,意思是生成“jnenbez 13 Absatz 3 ABC”的输出——意思是获取相同“norm”div的“jnenbez”跨度的文本内容,获取索引号“Absatz” div,因为它是“norm” div 的第三个孩子“Absatz”并获取内容。

1)我怎么能把这个字符串给用户,所以他可以把它复制粘贴到别的地方?似乎很难修改 Firefox 的复制+粘贴行为。一个明显的解决方案是将输出放在每个 div 文本内容末尾的 [jnenbez...] 之类的括号中,但这会降低 html 的可读性...

2) 甚至可以通过 JQuery 自动生成这个输出吗?

4

1 回答 1

1

不确定存储/显示信息的好方法。此外,不确定您在 class='norm' 容器中还有哪些其他标记。这非常重要,并且会完全影响有用解决方案的形状。

我假设了一个特定的结构 - 一个说第一个包含的跨度是一个有趣的结构。另一个假设是容器中唯一的 div 是感兴趣的并且需要计算在内。

我相信你可以很容易地打破它。:D

<!DOCTYPE html>
<html>
<head>
<script>
function onBtnPress(element)
{
    var result;

    var cont = element.parentNode;

    var span = cont.getElementsByTagName('span')[0];
    result = span.className + " ";
    result += span.innerHTML + " ";

    var divList = cont.getElementsByTagName('div');
    result += divList[0].className + " ";
    result += divList.length+" ";
    result += document.title;

    cont.getElementsByTagName('p')[0].innerHTML = result;
}
</script>

<title>ABC</title>
</head>
<body>
    <div class="norm">
        <span class="jnenbez">13</span>
        <div class="Absatz">text</div>
        <div class="Absatz">text</div>
        <div class="Absatz">CITE HERE**</div>
        <button onclick='onBtnPress(this);'>click me</button>
        <p>[string here]</p>
    </div>
    <div class="norm">
        <span class="Crapple">8</span>
        <div class="ipod">worst</div>
        <div class="ipod">music</div>
        <div class="ipod">player</div>
        <div class="ipod">I ever</div>
        <div class="ipod">bought</div>
        <div class="ipod">CITE HERE**</div>
        <button onclick='onBtnPress(this);'>click me</button>
        <p>[string here]</p>
    </div>
</body>
</html>
于 2012-09-29T11:30:53.143 回答