2013-03-27 36 views
-2

我有两个不同的页面,mouth.html和nose.html。我想从mouth.html得到一个名字。因此,当用户访问nose.html时,它会从nose.html中的mouth.html中打印出该地点的名称。我怎么能在Javascript中做到这一点?试图获取标签名称但不工作

这是mouth.html代码

<h1 class="man" style="clear:both;">{{ moot.name }}</h1> 

在nose.html,我试过,但它不是在nose.html工作

<script language="javascript"> 
    $("h1.man").load("mouth.html",function(data){ 
     var value=$(data).find("h1.man").attr("man") 
    }); 

</script> 

全码

<head> 
    <script language="javascript"> 
     $.get('mouth.html', function(data) { 
     var mootName = $(data).text(); 
     // Do something with mootName here 
     alert(mootName); 
    }); 
    </script> 
    </head> 
    <body> 
    <form action="." method="POST"> 
{% csrf_token %} 

    <div class="post-fed"> 
<p><label for="id_event_date">Event date:</label><input type="text" name="event_date" id="id_event_date" /><span class="helptext">E.g 2012-01-00.YYYY/MM/DD</span></p> 
<p><label for="id_end_date">End date:</label><input type="text" name="end_date" id="id_end_date" /><span class="helptext">E.g. 2012-01-00.YYYY/MM/DD</span></p> 
<p><label for="id_event_information">Event information:</label><textarea id="id_event_information" rows="10" cols="40" name="event_information"></textarea><span class="helptext"> E.g. eating etc</span></p> 
<p><label for="id_full_name">Full name:</label><input id="id_full_name" type="text" name="full_name" maxlength="100" /></p> 
<p><label for="id_e_mail">Email:</label></th><td><input id="id_e_mail" type="text" name="e_mail" maxlength="100" /></p> 
<p><label for="id_phone_no">Phone no:</label></th><td><input id="id_phone_no" type="text" name="phone_no" maxlength="100" /></p> 
<input type="submit" class="put" value="Send"/> 

</form> 
</div> 
</body> 
+0

'var value = ...'什么也看不见。它只是声明一个变量,然后由于函数结束而立即丢弃该变量。 – 2013-03-27 23:06:41

+0

只需注意,.attr(“man”)将获得属性man的值,如

,这两种方法都不是有效的html。 尝试使用.attr(“class”)来获取man值或.text()以获取内部文本。不知道你想从.attr(..)得到什么样的价值,也可以看到其他解决方案的其他答案。 – 2013-03-27 23:36:59

+0

我认为你需要澄清你的问题。你想从mouth.html获得'{{moot.name}}',然后在nose.html中做什么?记录它?警报?修改你的页面的一部分? – ernie 2013-03-27 23:39:05

回答

1

您可以直接像这样加载元素:

$('h1.man').load('mouth.html h1.man'); 

参见http://api.jquery.com/load/

编辑:

正如MichaelGeary指出的那样,这也复制元件,这是不希望(<h1><h1></h1></h1>)。这将是更好的:

$.get('mouth.html', function(data) { 
    var newText = $(data).find('h1.man').text(); 
    $('h1').text(newText); 
}); 
+0

即使如Altinak所说,“h1.man”是根节点吗? – 2013-03-27 23:12:18

+0

@JanDvorak文档表明它会,尽管看起来OP有负载工作 - 这是他正在看的内容。 – Alnitak 2013-03-27 23:13:34

+0

是的,'h1.man'的功能与其他jQuery选择器一样,根据文档: “与.get()不同,.load()方法允许我们指定远程文档的一部分插入。这是通过url参数的特殊语法实现的。如果字符串中包含一个或多个空格字符,则第一个空格后面的字符串部分将被假定为一个jQuery选择器,用于确定要加载的内容。“ – 2013-03-27 23:13:52

1

.find将只匹配后代节点,您h1是在树的顶端。您可以使用.filter('h1.man')来获得匹配的顶级节点。

但是请注意,回调将一次刚插入每个顶级元素来调用(在this通过该节点),所以如果<h1>真的是你的顶级节点,则可以只使用:

var value = $(this).attr(...); 

这比使用HTML字符串调用$(data)更有效率,因为$(data)只是创建另一个内存中的下载内容副本。

如果我理解正确的文档,你还需要调用​​在父现有h1.man元素,因为​​将插入加载HTML 指定的元素(替换现有的内容),而不是取代最初指定的元素。

这也意味着,这位家长必须包含h1.man元素,提示你需要的是HTML这样的:

<div id="h1_man_cont"><h1 class="man"> ... </h1></div> 

和JS:

$('#h1_cont_man').load('mouth.html', function(data) { 
    var value = $(this).attr(...); 
}); 
+0

是什么让你觉得'h1'是根? – 2013-03-27 23:08:57

+0

@JanDvorak因为这就是OP说的 - _“这是口中的代码。HTML“_ – Alnitak 2013-03-27 23:09:42

+0

哦。不过有点儿奇怪,这是_entire_内容。 – 2013-03-27 23:10:33

0

正如你可以看到各种答案和评论在这里,我们都对你想要做的事情有点困惑。所以让我把它分成两个单独的问题,我们可以分别查看每个问题。

第一个问题更清楚一点。你想获得mouth.html的内容并从中获取一些数据。 mouth.html从这个Django的模板生成一个文件:

<h1 class="man" style="clear:both;">{{ moot.name }}</h1> 

这是整个模板;没有<html><body>或其他任何东西。

因此,举例来说,如果你的Python变量moot.name是“迈克”的mouth.html的全部内容将是:

<h1 class="man" style="clear:both;">Mike</h1> 

现在我们要加载该文件,并抢“迈克”(或其他)从中。我们是这样做的:

$.get('mouth.html', function(data) { 
    var mootName = $(data).text(); 
    // Do something with mootName here 
}); 

这是如何工作:$(data)给你整个<h1>标签作为一个jQuery对象,然后.text()抓住从它的内部文本内容。

现在接下来的部分,该怎么处理这个名字?你必须弄清楚,或者更详细地描述你想做什么,因为那一部分还不清楚。

+0

感谢您的答复。我想nose.html页面上显示的名称一样,它会显示“你是关于预订LAV花园”在预订表格的顶部,所以当用户书园,这将节省的预订和他们订好了地点的名称。希望你明白我的意思?或者我应该说明它在Microsoft Word和将文件发送到你? – picomon 2013-03-28 21:52:05

+0

OK,我想我跟着你了。不幸的是,这是一个更详细和一般什么样的支持,比我在这里可以提供的。我能说的最好的就是我的回答说:“做一些与mootName这里”,那就是你需要编写一些代码来mootName'的'值插入到DOM在你需要它,我不知道您的预订页面上的HTML的结构,所以我不能建议任何如果你能告诉我们什么哟你的HTML看起来像,我可以给出更具体的建议,但我不能为你建立HTML页面。 (对不起!) – 2013-03-28 22:43:05

+0

现在检查,我已经插入了完整的nose.html代码。 – picomon 2013-03-29 10:34:01