Javascript 如何使用jQuery解决这个问题

Javascript 如何使用jQuery解决这个问题,javascript,jquery,Javascript,Jquery,我有一个html结构,比如 <div> <div id="mydiv"> <h3> This is a Test Page </h3> <div>I am inside a div</div> <a href="http://www.google.com">Click me</a> <

我有一个html结构,比如

 <div>

    <div id="mydiv">
        <h3>
        This is a Test Page
        </h3>
        <div>I am inside a div</div>
        <a href="http://www.google.com">Click me</a>  
        <div>Second div</div>     
    </div>
</div>
现在,elm打印/提醒以下代码:

  <h3>
        This is a Test Page
        </h3>
        <div>I am inside a div</div>
        <a href="http://www.google.com">Click me</a>  
        <div>Second div</div>  

因此,只想使用var-elm……sln可以同时使用jQuery/javascript。

尝试在html字符串中搜索h3或锚定将不起作用(如建议的其他解决方案)。您需要更改代码,以便将“mydiv”元素作为jQuery对象,然后在其中搜索:

$(elm).find("h3")
var elm = $('#mydiv');
alert(elm.html());
alert(elm.find('h3').text());
已更新

如果您确实想在字符串中加载html并对其进行解析,可以执行以下操作:

$(function () {
    // This is just a plain string of HTML now
    var html = document.getElementById("mydiv").innerHTML;

    // Add it to a hidden DOM element
    var hidden = $("<div/>").hide().appendTo("body");

    // Add the html, replacing the duplicate ID
    hidden.append(html.replace(/mydiv/, "mydiv2"));

    // Get the values
    alert(hidden.find("h3").text());
    alert(hidden.find("a").text());

    // Destroy holder
    hidden.remove();
});
$(函数(){
//现在这只是一个简单的HTML字符串
var html=document.getElementById(“mydiv”).innerHTML;
//将其添加到隐藏的DOM元素中
var hidden=$(“”).hide().appendTo(“body”);
//添加html,替换重复的ID
hidden.append(html.replace(/mydiv/,“mydiv2”);
//获取值
警报(hidden.find(“h3”).text());
警报(hidden.find(“a”).text());
//销毁持有者
隐藏。删除();
});
解决方案是:

 $(function () {
        var elm = document.getElementById("mydiv");
        alert($(elm).find('h3').text());
    });
我想是你写的

var elm=document.getElementById(“mydiv”).innerHTML


查看运行示例。

文森特和兰斯·麦克尼尔尼的回答说明了如何解决您的问题。要回答您的确切问题,您不能从
elm

以您想要的方式创建元素
elm
是一个基于您的html的字符串,与DOM没有任何联系。您可以对其进行解析以找到h3标记的值(不太优雅),但无法将该标记与DOM中存在的真实标记绑定。

此处的全部代码是什么?elm的定义正确吗?您得到的错误是什么?html()在alertelm中给出了'null',这是一个根据您上面所写的字符串。您需要将elm更改为以下内容:var elm=document.getElementById(“myDiv”);警报(elm.innerHTML);警报($(elm.find(“h3”).text());更改代码会起作用,但有没有办法直接从elmNo检索值。必须以不同的方式访问它。var elm=$(“#mydiv”);毫无疑问会起作用,只是想知道我可以用elm(我有)操纵吗,似乎这是不可能的…任何建议都会检查,并让你确切知道…我需要解析它,这意味着大量的工作:-)。。兰斯是第一个指出确切原因的人,所以我接受他的回答。投票支持u:-)。。谢谢你的建议
$(function () {
    // This is just a plain string of HTML now
    var html = document.getElementById("mydiv").innerHTML;

    // Add it to a hidden DOM element
    var hidden = $("<div/>").hide().appendTo("body");

    // Add the html, replacing the duplicate ID
    hidden.append(html.replace(/mydiv/, "mydiv2"));

    // Get the values
    alert(hidden.find("h3").text());
    alert(hidden.find("a").text());

    // Destroy holder
    hidden.remove();
});
 $(function () {
        var elm = document.getElementById("mydiv");
        alert($(elm).find('h3').text());
    });