【问题标题】:the DOM doesn't work with me when I try to sort an element当我尝试对元素进行排序时,DOM 对我不起作用
【发布时间】:2022-01-10 18:10:34
【问题描述】:

这是我的文件。当我尝试对某个数字进行排序时,它不会改变并保持为空

HTML 文件

<tr>
<th>Original array</th>
<td id ="td1">1,5,7,-1,3</td></tr>
<tr>
<th>Sorted Array</th>
<td id="td2"></td>

JS 文件

var OriginalArr = document.getElementById("td1").value;
var a =  document.getElementById("td2").value;
a.value = Original.sort();

【问题讨论】:

  • 我不认为td 元素具有可以使用的值属性。您可能需要使用textContent,然后在排序之前将其转换为数组。
  • 您没有在显示的代码中定义任何名为Original 的变量。也许你的意思是OriginalArr,但这不是一个数组,所以我真的不知道你在这里要做什么。

标签: javascript sorting dom


【解决方案1】:

这有两个主要问题。首先,大多数元素没有value 属性,只有接受输入的元素。在这种情况下,您似乎正在寻找textContent

另一件事是当你得到td1中的文本时,必须先将其转换为数组,然后才能对其进行排序。

这是修复了上述问题的代码:

// Get text in td1
var td1Text = document.getElementById("td1").textContent;

// Get array of numbers from text
var OriginalArray = td1Text.split(",").map(function(num){
  return parseInt(num,10);
});

// Get td2
var td2 =  document.getElementById("td2");

// Set td2 to sorted array converted to string
td2.textContent = OriginalArray.sort().toString();
<table>
<tr>
<th>Original array</th>
<td id ="td1">1,5,7,-1,3</td></tr>
<tr>
<th>Sorted Array</th>
<td id="td2"></td></tr>
</table>

还有一点需要注意的是&lt;tr&gt; 标签必须在&lt;table&gt; 中才能被getElementById 正确查询。如果没有 table 标签,getElementById 返回null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2018-02-10
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多