Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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 DOMDocument getelementbyid冲突?_Javascript_Php_Html - Fatal编程技术网

Javascript DOMDocument getelementbyid冲突?

Javascript DOMDocument getelementbyid冲突?,javascript,php,html,Javascript,Php,Html,我有一个javascript弹出窗口,“成功”使用php加载另一个页面作为DOMDocument,“成功”通过id查找一个元素以使用nodeValue显示其文本…但是…nodeValue调用返回的不是所需元素内的文本,而是具有相同名称的锚定标记内的文本。下面是一些代码: 看似“有效”的html和php: validateOnParse=true; //加载关键术语和标识html文件 $doc->loadHtml(文件获取内容http://teachers.dadeschools.net/jzo

我有一个javascript弹出窗口,“成功”使用php加载另一个页面作为DOMDocument,“成功”通过id查找一个元素以使用nodeValue显示其文本…但是…nodeValue调用返回的不是所需元素内的文本,而是具有相同名称的锚定标记内的文本。下面是一些代码:

看似“有效”的html和php:


validateOnParse=true;
//加载关键术语和标识html文件
$doc->loadHtml(文件获取内容http://teachers.dadeschools.net/jzoeller/APHG/0-Key-Terms-Identifications.html'));
//按id以可读形式打印元素的内容
打印($doc->getElementById('favela')->nodeValue);
?>
现在,“应该”显示的是上面代码中引用的页面中“贫民窟”一词的定义。我得到的只是“贫民窟”这个词

这里还有一些代码,这次来自php加载的页面:

<tr>
<td><a name="favela">
favela</a></td>
<td class="def" id="favela">A shantytown or slum, especially in Brazil.</td>
<td>07</td>
<td>06</td>
</tr>

贫民窟
棚户区棚户区或贫民窟,尤指在巴西。
07
06
使用var_dump进行调试时,我发现:

对象(DomeElement)#1(17){[“标记名”]=>string(1)“a”[“schemaTypeInfo”]=>NULL[“节点名”]=>string(1)”a”[“节点值”]=>string(8)“favela”>[“节点类型”]=>int(1)[“父节点”=>string(22)”(对象值省略)>[“子节点”]=>string(22)”(对象值省略)[“第一个孩子”=>string(22)”(对象值省略)[“最后一个孩子”]=>字符串(22)”(对象值省略)>[“以前的同级”]=>NULL[“属性”]=>string(22)”(对象值省略)>[“所有者文档”]=>string(22)”(对象值省略)[“名称空间URI”]=>NULL>[“前缀”]=>string(0)”[“本地名称”=>string(1)”a“[“基本URI”]=>NULL>[“文本内容”]=>string(8)“贫民窟”}

这似乎是说它的主播名为“favela”,而不是td名为“favela”。什么给了我

您可以使用查询而不是
getElementById()
来避开
name
属性,并仅针对具有
id
属性为“favela”的元素:

输出:

A shantytown or slum, especially in Brazil.

为什么这个标签是“Javascript”。关于用PHP实现的DOMDocument,这不是一个PHP问题吗?我不太了解DOMDocument,但我认为它将html作为html40处理,并且
a
元素的
name
属性是一个ID属性(ID属性不需要有name
ID
)。至此,你会发现
a
。好吧,正如我所怀疑的,它在锚上绊倒了;那么,我如何跳过锚并获取id的第二个实例,在本例中是“favela”。另外,谢谢你的解释。我希望我的解决方案是简洁的!使用DOMXPath搜索
/[@id='favela']
可能会成功,但正如我所说,我对
DOMDocument
不太了解,因此我不知道我的假设是否真的正确,也不知道
@id
是否会遇到同样的问题。谢谢,我不得不离开该项目几天……但你的解决方案有效。只有一个小问题:我使用的创作软件似乎对引号的使用非常敏感,因此我发现我必须用以下内容替换:('/*[@id=“favela”]'):(“/*[@id='favela'])”。
$xpath = new DOMXPath($doc);
$favelaElement = $xpath->query('//*[@id="favela"]')->item(0);

print_r($favelaElement->nodeValue);
A shantytown or slum, especially in Brazil.