无法在 onchange = function() 中将一个字符串分配给另一个字符串
Can't assign a string to another string in an onchange = function()
我有这个:
<select id="prio" class="w60">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
如果我select另一个值,一个onchange = function()
被调用:
var prio = document.getElementById('prio');
var string1 = "Hello";
var string2 = "";
prio.onchange = function ()
{
prioIndex = prio.options[prio.selectedIndex].text;
switch (prioIndex)
{
case '1': prioIndex = " my Friend";
break;
case '2': prioIndex = " my Sister and Brother";
break;
case '3': prioIndex = " my Mom and Dad";
break;
}
alert(prioIndex);
string2 = prioIndex;
}
alert(string2);
函数里面的alert工作正常,但是他不会分配新的String。
alert(string2)
显示 string2(未定义)。
我想在函数外使用string2
。但我不能,因为它从未被分配过。但是不知道为什么。
比方说,我想在另一个 onchange 函数中使用 string2
...
var string3;
news.onchange = function ()
{
string3 = string2.concat(' how are you');
alert(string3);
}
并将其分配给string3
。如果我想在 onchange-function 之外使用 string3
它是 undefined
.
那是因为 alert(string2)
不在点击处理函数中,只执行一次与 prio
是否被点击无关。尝试将其移入内部以在每次点击时检查 string2
的值。
prio.onchange = function ()
{
prioIndex = prio.options[prio.selectedIndex].text;
switch (prioIndex)
{
case '1': prioIndex = " my Friend";
break;
case '2': prioIndex = " my Sister and Brother";
break;
case '3': prioIndex = " my Mom and Dad";
break;
}
alert(prioIndex);
string2 = prioIndex;
alert(string2);
}
JavaScript 就是我们所说的 'callbacks'。回调是在设置回调的元素上发生操作后执行的函数。因此,只有当您更改 HTML 页面上的 prio
元素时,您的 onchange
函数才会执行。
这意味着您的 prio.onchange = function () { ... }
将不会执行,除非您转到 HTML 页面,单击 select 元素 并更改 它的价值。
因此,一旦代码加载到您的浏览器中,将执行的是以下内容(它并不完全正确,但可以帮助您理解为什么您的 string2
没有按您期望的那样分配):
var prio = document.getElementById('prio');
var string1 = "Hello";
var string2 = "";
alert(string2);
你能看出问题所在吗?正确的!!!调用 alert(string2)
时 string2
为空! :D
您可以通过将 string2
传递给回调中的另一个函数来执行您想要的操作,例如:
var foo = function ( val ) {
alert('string2 value is: ' + val);
};
prio.onchange = function () {
prioIndex = prio.options[prio.selectedIndex].text;
switch (prioIndex) {
case '1': prioIndex = " my Friend";
break;
case '2': prioIndex = " my Sister and Brother";
break;
case '3': prioIndex = " my Mom and Dad";
break;
}
foo(prioIndex);
}
但是,如果您想在两个不同的回调中使用该信息,您可以定义一个函数以在需要时获取该值。我的意思是:
var string2 = function () {
var prio = document.getElementById('prio');
prioIndex = prio.options[prio.selectedIndex].text;
switch (prioIndex) {
case '1': prioIndex = " my Friend";
break;
case '2': prioIndex = " my Sister and Brother";
break;
case '3': prioIndex = " my Mom and Dad";
break;
}
return prioIndex;
}
var string3;
news.onchange = function () {
string3 = string2() + ' how are you';
alert(string3);
}
我有这个:
<select id="prio" class="w60">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
如果我select另一个值,一个onchange = function()
被调用:
var prio = document.getElementById('prio');
var string1 = "Hello";
var string2 = "";
prio.onchange = function ()
{
prioIndex = prio.options[prio.selectedIndex].text;
switch (prioIndex)
{
case '1': prioIndex = " my Friend";
break;
case '2': prioIndex = " my Sister and Brother";
break;
case '3': prioIndex = " my Mom and Dad";
break;
}
alert(prioIndex);
string2 = prioIndex;
}
alert(string2);
函数里面的alert工作正常,但是他不会分配新的String。
alert(string2)
显示 string2(未定义)。
我想在函数外使用string2
。但我不能,因为它从未被分配过。但是不知道为什么。
比方说,我想在另一个 onchange 函数中使用 string2
...
var string3;
news.onchange = function ()
{
string3 = string2.concat(' how are you');
alert(string3);
}
并将其分配给string3
。如果我想在 onchange-function 之外使用 string3
它是 undefined
.
那是因为 alert(string2)
不在点击处理函数中,只执行一次与 prio
是否被点击无关。尝试将其移入内部以在每次点击时检查 string2
的值。
prio.onchange = function ()
{
prioIndex = prio.options[prio.selectedIndex].text;
switch (prioIndex)
{
case '1': prioIndex = " my Friend";
break;
case '2': prioIndex = " my Sister and Brother";
break;
case '3': prioIndex = " my Mom and Dad";
break;
}
alert(prioIndex);
string2 = prioIndex;
alert(string2);
}
JavaScript 就是我们所说的 'callbacks'。回调是在设置回调的元素上发生操作后执行的函数。因此,只有当您更改 HTML 页面上的 prio
元素时,您的 onchange
函数才会执行。
这意味着您的 prio.onchange = function () { ... }
将不会执行,除非您转到 HTML 页面,单击 select 元素 并更改 它的价值。
因此,一旦代码加载到您的浏览器中,将执行的是以下内容(它并不完全正确,但可以帮助您理解为什么您的 string2
没有按您期望的那样分配):
var prio = document.getElementById('prio');
var string1 = "Hello";
var string2 = "";
alert(string2);
你能看出问题所在吗?正确的!!!调用 alert(string2)
时 string2
为空! :D
您可以通过将 string2
传递给回调中的另一个函数来执行您想要的操作,例如:
var foo = function ( val ) {
alert('string2 value is: ' + val);
};
prio.onchange = function () {
prioIndex = prio.options[prio.selectedIndex].text;
switch (prioIndex) {
case '1': prioIndex = " my Friend";
break;
case '2': prioIndex = " my Sister and Brother";
break;
case '3': prioIndex = " my Mom and Dad";
break;
}
foo(prioIndex);
}
但是,如果您想在两个不同的回调中使用该信息,您可以定义一个函数以在需要时获取该值。我的意思是:
var string2 = function () {
var prio = document.getElementById('prio');
prioIndex = prio.options[prio.selectedIndex].text;
switch (prioIndex) {
case '1': prioIndex = " my Friend";
break;
case '2': prioIndex = " my Sister and Brother";
break;
case '3': prioIndex = " my Mom and Dad";
break;
}
return prioIndex;
}
var string3;
news.onchange = function () {
string3 = string2() + ' how are you';
alert(string3);
}