[英]JavaScript is not working on Swedish letters
我的JavaScript过滤代码不适用于瑞典语字母åäö
<input name='tablefilter' type='checkbox' value='Linköping' id='tablefilter1' checked/>
<label for='tablefilter1'>Linköping</label>
<input name='tablefilter' type='checkbox' value='Mjölby' id='tablefilter2' checked/>
<label for='tablefilter2'>Mjölby</label>
<input name='tablefilter' type='checkbox' value='Norrköping' id='tablefilter3' checked/>
<label for='tablefilter3'>Norrköping</label>
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody id='tablebody'>
<tr>
<td>Linköping</td>
<td>One</td>
<td>First</td>
</tr>
<tr>
<td>Mjölby</td>
<td>Two</td>
<td>Second</td>
</tr>
<tr>
<td>Norrköping</td>
<td>Three</td>
<td>Third</td>
</tr>
</tbody>
</table>
js
/* Demo filtering table using checkboxes. Filters against first td value */
/* Set 'ready' handler' */
document.addEventListener('DOMContentLoaded', initFunc);
/* When document ready, set click handlers for the filter boxes */
function initFunc(event) {
var filters = document.getElementsByName('tablefilter');
for (var i = 0; i < filters.length; i++) {
filters[i].addEventListener('click', buildAndExecFilter);
}
}
/*
This function gets called when clicking on table filter checkboxes.
It builds a list of selected values and then filters the table based on that
*/
function buildAndExecFilter() {
var show = [];
var filters = document.getElementsByName('tablefilter');
for (var i = 0; i < filters.length; i++) {
if (filters[i].checked) {
show.push(filters[i].value);
}
}
execFilter(show); // Filter based on selected values
}
function execFilter(show) {
/* For all rows of table, see if td 0 contains a selected value to filter */
var rows = document.getElementById('tablebody').getElementsByTagName('tr');
for (var i = 0; i < rows.length; i++) {
var display = ""; // Default to display
// If it is not found in the selected filter values, don't show it
if (show.indexOf(rows[i].children[0].textContent) === -1) {
display = "none";
}
// Update the display accordingly
rows[i].style.display = display;
}
}
http://jsfiddle.net/2Lm7pytt/4/
它适用于jsfiddle,但不适用于我的Visual Studio。 问题不在于它不能显示瑞典字母,因为它可以。
问题在于JavaScript无法在瑞典语字母上运行。
我应该怎么做才能使其正常工作?
您可以尝试将其添加到head标签的顶部
<meta charset =“ utf-8” />
这可能会在某些时候失败,但是由于编码问题,它很可能在比较中失败,因此我建议在此行之前使用调试器对JavaScript进行断点:
if (show.indexOf(rows[i].children[0].textContent) === -1) {
display = "none";
}
检查textContent
包含的内容,尝试在“即时窗口”中进行比较,例如, rows[i].children[0].textContent === "Linköping"
。 如果您发现此错误返回,则可能会确认。
转到Visual Studio中的“文件”>“高级保存选项”,然后在此处检查设置的编码选项-我使用的是“ Unicode(带签名的UTF-8)-代码页65001”,我的代码包含元数据,如下面答案中的布兰登建议所示。 有了这些设置,它对我来说正在按预期运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.