将获得的 InnerHTML 文本结果转换为元素
Convert getted result of InnerHTML text to an element
我有一些代码:
<table>
<tbody>
<tr>
<td id='myTdId'>
<input type='text' value='some value' />
</td>
</tr>
...
</tbody>
<table>
我想获取 myTdId
td 元素的 innerHTML 并获取文本输入的值。可能吗?
例如:
var tdInnerHTML = document.getElementById('myTdId').innerHTML;
// convert this to element operation and access to value of it ...
console.log(tdInnerHTML.value); // :(
请帮助我,谢谢...
编辑:
我不访问输入文本!
另一种明确的方法是在您的 HTML 上添加 id
或 class
,这样您就可以轻松获得内在的 value
。
例如
HTML:
<input id="text-input" value="">
Javascript
var inputValue = document.getElementById('text-input').value;
console.log(inputValue);
jQuery版本
var inputValue = $('#text-input').val();
希望对您有所帮助。
使用 childNodes 导航如何?
这是一个包含元素节点的数组。
你的情况...
var tdInputVal = document.getElementById('myTdId').childNodes[0].value;
console.log(tdInputVal ); // :(
你能在输入本身上添加 Id 吗?
<table>
<tbody>
<tr>
<td id='myTdId'>
<input type='text' value='some value' id="myInput" />
</td>
</tr>
...
</tbody>
<table>
然后通过
访问它
var input = document.getElementById('myInput').value;
或通过标签访问
var input = document.getElementsByTagName("input")[0].value;
我认为您不需要对该元素调用 innerHTML。您需要获取 ID 为 "myTdId" 的 td 元素的子元素。为此,您可以使用
var tdElement = document.getElementById('myTdId');
console.log(tdElement.children[0].value);
这应该让您获得 td 元素的值,而无需设置 id 或 class 到 td 元素。
我假设你在 td 中只有一个元素;
我没有测试代码,但它应该可以工作。
使用 getElementById 而不是在结果对象上使用 getElementBy_XXX。
如果您使用 getElementsByClassName 或 TagName,您将获得子元素数组。
//ELEMENT
var tdElement = document.getElementById('myTdId');
// INNER HTML
var tdInnerHTML = document.getElementById('myTdId').innerHTML;
var childElement = tdElement.getElementsByTagName("input");
//if td is only and always first element than we can use :
//childElement[0]
alert(childElement[0].value)
<table>
<tbody>
<tr>
<td id='myTdId'>
<input type='text' value='some value' />
</td>
</tr>
</tbody>
<table>
<script>
// I dont use this function but you can if you want
function getElementInsideElement(baseElement, wantedElementID) {
var elementToReturn;
for (var i = 0; i < baseElement.childNodes.length; i++) {
elementToReturn = baseElement.childNodes[i];
if (elementToReturn.id == wantedElementID) {
return elementToReturn;
} else {
return getElementInsideElement(elementToReturn, wantedElementID);
}
}
}
</script>
// Use querySelector
var input = document.querySelector('#myTdId input');
var val = input.value;
我有一些代码:
<table>
<tbody>
<tr>
<td id='myTdId'>
<input type='text' value='some value' />
</td>
</tr>
...
</tbody>
<table>
我想获取 myTdId
td 元素的 innerHTML 并获取文本输入的值。可能吗?
例如:
var tdInnerHTML = document.getElementById('myTdId').innerHTML;
// convert this to element operation and access to value of it ...
console.log(tdInnerHTML.value); // :(
请帮助我,谢谢...
编辑: 我不访问输入文本!
另一种明确的方法是在您的 HTML 上添加 id
或 class
,这样您就可以轻松获得内在的 value
。
例如
HTML:
<input id="text-input" value="">
Javascript
var inputValue = document.getElementById('text-input').value;
console.log(inputValue);
jQuery版本
var inputValue = $('#text-input').val();
希望对您有所帮助。
使用 childNodes 导航如何?
这是一个包含元素节点的数组。
你的情况...
var tdInputVal = document.getElementById('myTdId').childNodes[0].value;
console.log(tdInputVal ); // :(
你能在输入本身上添加 Id 吗?
<table>
<tbody>
<tr>
<td id='myTdId'>
<input type='text' value='some value' id="myInput" />
</td>
</tr>
...
</tbody>
<table>
然后通过
访问它var input = document.getElementById('myInput').value;
或通过标签访问
var input = document.getElementsByTagName("input")[0].value;
我认为您不需要对该元素调用 innerHTML。您需要获取 ID 为 "myTdId" 的 td 元素的子元素。为此,您可以使用
var tdElement = document.getElementById('myTdId');
console.log(tdElement.children[0].value);
这应该让您获得 td 元素的值,而无需设置 id 或 class 到 td 元素。
我假设你在 td 中只有一个元素;
我没有测试代码,但它应该可以工作。
使用 getElementById 而不是在结果对象上使用 getElementBy_XXX。 如果您使用 getElementsByClassName 或 TagName,您将获得子元素数组。
//ELEMENT
var tdElement = document.getElementById('myTdId');
// INNER HTML
var tdInnerHTML = document.getElementById('myTdId').innerHTML;
var childElement = tdElement.getElementsByTagName("input");
//if td is only and always first element than we can use :
//childElement[0]
alert(childElement[0].value)
<table>
<tbody>
<tr>
<td id='myTdId'>
<input type='text' value='some value' />
</td>
</tr>
</tbody>
<table>
<script>
// I dont use this function but you can if you want
function getElementInsideElement(baseElement, wantedElementID) {
var elementToReturn;
for (var i = 0; i < baseElement.childNodes.length; i++) {
elementToReturn = baseElement.childNodes[i];
if (elementToReturn.id == wantedElementID) {
return elementToReturn;
} else {
return getElementInsideElement(elementToReturn, wantedElementID);
}
}
}
</script>
// Use querySelector
var input = document.querySelector('#myTdId input');
var val = input.value;