这是我的代码:
<script LANGUAGE="Javascript">
function choiceReturn(obj) {
switch(obj.value) {
case "1":
document.write("<input value='Fund (L###)' type='text'
class='button3' onfocus='if(this.value == "Fund (L###)"){this.value = '';}'
onblur="if(this.value == ''){this.value = 'Fund (L###)'}">");
}
}
</script>
<select name="funds_menu" onchange="choiceReturn(this);">
<option selected>Choose 1 to 3</option>
<option value="1">1. Choose fund</option>
<option value="2">2. Prepare data</option>
<option value="3">3. Perform valuation</option>
</select>
我的意图:从列表中选择第一项后,将出现基金(L ###)输入框。我还有一些小代码onblur和onfocus,以使它更酷。
然而,没有任何反应。我究竟做错了什么?那里有很多引号。也许这就是搞乱这个的原因。
答案 0 :(得分:2)
多行字符串不是JavaScript中的东西。你将不得不单独连接它们。此外,您的一些嵌套嵌套字符串未正确转义。
固定代码:
document.write("<input value='Fund (L###)' type='text' " +
"class='button3' onfocus='if(this.value == \"Fund (L###)\"){this.value = \"\";}' " +
"onblur='if(this.value == \"\"){this.value = \"Fund (L###)\"}'>");
但是,document.write
通常是一个坏主意™,并通过document.createElement
,element.setAttribute
等方法进行DOM操作(或直接使用JS DOM API设置它们),{{1} }和element.addEventListener
几乎总是一种更好的方法。
以下是重写为不使用element.appendChild
的代码:
document.write
另请注意,您尝试执行的操作已存在:placeholder="Fund (L###)"
。