【问题标题】:Why Isn't My split() Delimiter Acknowledged?为什么我的 split() 分隔符没有被确认?
【发布时间】:2015-04-26 13:08:26
【问题描述】:

刚开始学习 JavaScript;写一些功能比较基础的计算器。我发现需要将多个变量值放在下拉菜单的选项标签中,经过研究,我认为将它们放在一个字符串中最简单,然后使用 split() 函数将它们拆分,但不管我指定的分隔符,它就像没有分隔符一样,并单独拆分每个字符。为什么?

<select name="fuel" onChange="document.scalc.fuel.value=document.scalc.fuel.value.split(',')">
    <option value="199x1,50">cu/ft Natural Gas(Via Storage Tank Burner, 65% Efficient)</option>
</select>

【问题讨论】:

  • 是的,永远不要将javascript“缩写”为java。
  • 表单元素的value属性必须是字符串。 split() 的结果是一个数组。数组的toString()是数组元素重新组合成一个字符串。
  • @Cᴏʀʏ 我在 5 秒前说过。但我注意到问题在于每个角色都被分割了。引用:“acts as if there is none, and splits each character individually”(就像您传递了一个空字符串一样)。
  • 为什么要分配回自身,这会导致更改,然后再次触发该功能?这至少需要一些jQuery。
  • @IsmaelMiguel:这里发生了不止一种不好的做法:内联 onchange 属性中有很多代码,应该移出到它自己的函数中(并且不显眼地附加)。然后是无限变化触发,最后是 value 属性将被分配的东西在&lt;option&gt; 元素中没有对应的值。不了解作者的意图,实在是没法回答这个问题。

标签: javascript


【解决方案1】:

Cᴏʀʏ 提出了一些好的观点。此外,您会发现在测试 JavaScript 时打开浏览器的 JavaScript 控制台会很有帮助,这样它就可以向您显示遇到的任何错误。

我根本无法让你的示例代码做任何事情——也许你把它缩短得太多了。

您的页面可能看起来类似于

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Example</title>
<script>
/* TODO: Give this function a meaningful name. */
function x(srcId, targetId) {
    // Get reference to the source element
    var src = document.getElementById(srcId);
    // Make sure it is a select element
    if (src.nodeName.toLowerCase() === "select") {
        var target = document.getElementById(targetId);
        // Put the first part of the source's value in the target
        target.value = src.value.split(",")[0];
    }
}
</script>
</head>
<body>
<form id="scalc">
    <select id="fuel" onChange="x('fuel', 'result')">
        <option value="199x1,50">cu/ft Natural Gas(Via Storage Tank Burner, 65% Efficient)</option>
        <option value="50x2,60">cu/ft Natural Gas(Via Super Burner, 70% Efficient)</option>
    </select>
    <input id="result" type="text" readonly="readonly" />
</form>
</body>
</html>

参考:
<meta charset='utf-8'> vs <meta http-equiv='Content-Type'>
Best Practice: Access form elements by HTML id or name attribute?
How can javascript determine the type of an html element?
也很有用:W3C Markup Validation Service

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2018-07-09
    • 2020-12-16
    • 2015-11-01
    • 2011-08-19
    • 1970-01-01
    相关资源
    最近更新 更多