Вот исходный HTML:JavaScript-форма DOM-обход - где текст ярлыка?
<li class="box">
<label for="text0">Career Objectives:</label>
<div>
<textarea id="text0"
name="text0"
cols="55"
rows="6">
</textarea>
</div>
</li>
Вот обходом код, который я пробовал:
console.log($("text0").parentNode.previousSibling.nodeName);
console.log($("text0").parentNode.previousSibling.nodeType);
console.log($("text0").parentNode.previousSibling.nodeValue);
console.log($("text0").parentNode.previousSibling.innerText);
console.log($("text0").parentNode.previousSibling.innerHTML);
console.log($("text0").parentNode.previousSibling.value);
Здесь выход:
#text projectJS.js:84
3 projectJS.js:85
projectJS.js:86 <--- 2 lines of blank output
undefined projectJS.js:87
undefined projectJS.js:88
undefined projectJS.js:89
Как я понимаю DOM:
- ParentNode является ДИВ
- PreviousSibling это метка
- NodeType текстов
Что я упускаю, пожалуйста? Где фактический текст?
EDIT это не JQuery:
var $ = function(id) { return document.getElementById(id); }
Как может '$ (" text0 ")' соответствовать чему-нибудь? Он попытается правильно подобрать тег? – Bart
Когда '' 'вызывает' document.getElementById' с переданным аргументом. Это не jQuery. –
IE может не включать пробельный узел в DOM, и в этом случае 'previousSibling' действительно будет ярлыком. Предложите использовать что-то наподобие 'parentNode.parentNode.getElementsByTagName ('label') [0]', чтобы справиться с несогласованностью - или, как упомянуто, библиотеками, которые скрывают эту боль. – bobince