【发布时间】:2016-02-02 17:41:28
【问题描述】:
我这里有这个功能:
function nameSplit() {
var option_result = document.getElementById("fname").value;
var option_array=option_result.split(" ");
document.getElementById('first_name').value = option_array[0];
document.getElementById('last_name').value = option_array[1];
}
function myFunction() {
var option_result = document.getElementById("fname").value;
document.getElementById("demo").innerHTML = option_result.length;
document.getElementById("demo2").innerHTML = option_array.prototype.length;
}
<form>
<label>Name:</label>
<input type="text" id="fname">
<input type='button' onclick='nameSplit()' value='Change Text'/>
</form>
<br>
<input id="first_name" name="fid" value="" />
<input id="last_name" name="sid" value="" />
<br>
option_result: <p id="demo"></p>
option_array: <p id="demo2"></p>
<button onclick="myFunction()">Try it</button>
如您所见,我的option_array.prototype.length; 没有返回任何内容。所以我不知道解释这一点的最佳方法,但简而言之,我想确定函数中有多少个数组,并将其作为被拉取的数字
document.getElementById('last_name').value = option_array[1];
我希望它像这样工作:
document.getElementById('last_name').value = option_array[(Number of total arrays)];
如果您运行原始函数并输入“John Doe”,它会将其拆分为“John”和“Doe”,但如果您将输入更改为“John Doe Jr”。它仍会以“John”和“Doe”返回。我希望它返回“John”和“Doe Jr”。
我试图创建一个运行 option_array[1] + " " + option_array[2]; 的脚本,但如果一个人只使用数组的两个部分,第三部分返回未定义。
有什么想法吗?
【问题讨论】:
-
您的 innerhtml 行是一次公平的调试尝试,但它们似乎没有做任何有用的事情。 (我不确定
prototype.length行是否符合您的要求。)如果您为option_array.length添加一个简单的测试 - 检查数组长度的常用方法会怎样? -
我试过 option_array.length ,我也得到一个空白的结果。
-
接下来发生了一些不确定的事情。最好检查 (1) 你的
option_array是否进入这个函数,并且 (2) anything else does 出现在那个位置。顺便说一句,请参阅 Mozilla's documentation 以获取检查数组长度的示例。 -
哇。我忘了将
var option_array=option_result.split(" ");添加到函数myFunction()中。在我这样做然后运行document.getElementById("demo2").innerHTML = option_array.length;之后,它返回了数组的数量。 -
我继续根据获得的新信息编写 if else 语句。我现在有另一个问题,你有什么想法@Jongware JSfiddle Link
标签: javascript arrays html