Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery$.get获取页面后按标记名获取元素_Javascript_Jquery_Html - Fatal编程技术网

Javascript 使用jQuery$.get获取页面后按标记名获取元素

Javascript 使用jQuery$.get获取页面后按标记名获取元素,javascript,jquery,html,Javascript,Jquery,Html,我在jQuery中使用$.get请求一个完整的页面,并希望获取特定元素的内容。另外,下面是事情的样子: $.get( "/page.html").done(function( data ) { // get textArea. }); 我想得到: document.getElementByTagName("textArea")[0].value; 但是我不能对数据执行getElementByTagName,所以最好的方法是什么?您可以尝试jquery load()函数 它将从远程服务器

我在jQuery中使用$.get请求一个完整的页面,并希望获取特定元素的内容。另外,下面是事情的样子:

$.get( "/page.html").done(function( data ) {
   // get textArea.
});
我想得到:

document.getElementByTagName("textArea")[0].value;
但是我不能对数据执行getElementByTagName,所以最好的方法是什么?

您可以尝试jquery load()函数

它将从远程服务器加载并将文档插入所选元素

它还允许我们指定要插入的远程文档的一部分

假设您的远程textarea的id为“remote”,并且您希望将远程内容提取到id为“local”的textarea中

我不确定是否要获取远程文本区域并插入到当前文档的元素中

如果您只想获取远程textarea的值,那么可以隐藏调用元素的加载函数


希望这对您有所帮助。

这与您正在做的略有不同,但我认为它可以有所帮助。您可以调用
.load
而不是
get
,并将整个页面添加到div,比如

但是,如果您不想显示
mydiv
,则可以在主页加载后在开始时隐藏,如果您也不想在页面上显示此div,则可以在执行上述任务后将其删除

$(document).ready(function(){
  $('#mydiv').hide();
  var value;
  $('#mydiv').load('xyz.html',function(){value=$('#mydiv').find('#mytextarea').val()});

 $('#mydiv').remove();
})

//str表示page.html

var str = 'gibberish gibberish <textarea class="test">hello world</textarea>gibberish';

$.each( $.parseHTML(str), function( i, el ) {
    if(el.firstChild) console.log(el.firstChild);
});
var str='gibberish gibberish hello worldchibberish';
$.each($.parseHTML(str),函数(i,el){
if(el.firstChild)console.log(el.firstChild);
});

Fiddle:

既然您正在使用jQuery…您是否尝试过
$(数据).find('textarea').first().val()


这是假设
数据
是一个片段。如果不是,您将希望首先将其包装在
div
或其他文件中

我尝试使用find,但没有成功,所以我最终使用了filter,它返回了我需要的textArea值:

$.get( "/page.html").done(function( data ) {
   var textArea = $(data).filter("textarea")[0].innerText;
});

这实际上不起作用,它返回未定义:(这确实返回了textarea文本,但是,它也返回了一些其他内容。例如,页面的样式……这将消耗性能,并会影响加载数据的方式,因为每次请求数据时,都会将其加载到页面中,隐藏、处理,然后删除,这是一个较长的过程。)过程比它应该的要复杂,对吗?@user220755从服务器获取html文件的数据,如您的问题中的textarea值,需要将该文件注入当前页面的DOM结构中,为此,
load
是最合适的选择。我不是web开发方面的专家,但我认为性能成本很高与完成任务相比非常少。请看一下此链接,您想做什么?您是否只需要该值?如果需要,您不能让服务器返回JSON格式的内容吗?
var str = 'gibberish gibberish <textarea class="test">hello world</textarea>gibberish';

$.each( $.parseHTML(str), function( i, el ) {
    if(el.firstChild) console.log(el.firstChild);
});
$.get( "/page.html").done(function( data ) {
   var textArea = $(data).filter("textarea")[0].innerText;
});