这是触发器:
<td id="yearOfDraw">
<select id="selectedYear" onchange="storeValue('y', this.value)">;
<option selected="selected" value="">Select Year
</option>
<script type="text/javascript">
yearOption();
</script>
</select>
</td>
...以上,以及以下,我试过没有成功;
storeValue()作为库函数==文字,&#34; y&#34;,但是被传递但是 不是这个。值。
头元素中的storeValue()==相同的结果......
onchange选项:
onchange="storeValue('y', " + this.value)>; // breaks the code.
onchange="storeValue(this.value, 'y')">; // this.value is not passed.
onchange="storeValue(this.value)">; // ...nothing is passed
onchange="storeValue(alert('this.value is: ', this.value)">; //displays \
the value selected, just doesn't pass it to the function.
(来自&#34; stackoverflow-JavaScript将参数this.value传递给函数&#34;)
onchange="storeValue('y', " + this.options[this.selectedIndex].value)>; // breaks the code.
我没有看到&#34;范围&#34;作为一个问题,因为这个&#39;将是一个指针 Element对象,选择,因此,Global&#39;在范围&#39;到被叫 功能。但这种假设并不能解释这个问题。相等, 如何制作,&#39; this.value&#39;,全球范围内?
有什么想法吗?
谢谢, JungeBleu
答案 0 :(得分:1)
我更愿意发表评论,但没有足够的代表。 :)
无论如何,您似乎通过javascript填充选项。如果是这种情况,storeValue不知道DOM中填充的额外选项,因为yearOption()
仅在页面加载后填充DOM。
但是,如果你要在第一个位置拥有所有选项,或者在storeValue
填充DOM之后绑定yearOption()
,可能使用匿名函数,它可能会起作用。
修改强>
jquery
这样的库,以便我们可以在以后加载DOM之后附加事件 - 以一种非常简单的方式:)onchange
将不会触发... yearOption()
到底做了什么?看到这个小提琴:http://jsfiddle.net/LsY3Y/1/
答案 1 :(得分:0)
您可能正在使用IE 8或更低版本(或者在怪癖模式或版本8或更低版本的兼容模式下使用某些更新版本),其中没有值属性的选项不返回值返回空字符串,而不是选项的文本。在其他(W3C兼容)浏览器中,将返回文本。
以下“有效”:
<script>
// Simple function to report values
function storeValue(s, v) {
console.log(s + ':' + v);
}
</script>
<select onchange="storeValue('y', this.value)">
<option selected>Select Year
<option value="2000">2000
<option value="2000">2001
<option>2002 <!-- Option without a value attribute -->
</select>
关于您的其他问题:
我不认为“范围”是一个问题,因为'this'将是一个指向Element对象的指针,select,因此,Global'in scope'到被调用的函数。
此仅在全局代码中是全局的,它始终在当前的执行上下文中得到解决。在全局代码中,它是全局对象,在任何其他上下文中,它是通过如何调用函数或使用bind来设置的。
内联事件处理程序代码包含在函数中,当调用该函数时,其 this 将设置为该元素。因此,即使内联代码看起来是全局的,它实际上是功能范围的,并且拥有它自己的本地这个,它不是全局对象。
如何制作,'this.value',Global in scope?
你不能,见上文。 : - )