javascript中的javascript,传递变量

时间:2012-06-08 19:24:29

标签: javascript html

我在JavaScript函数中有一个JavaScript函数。下面的JavaScript使用divgetElementbyID中插入一些HTML。

传递一个变量好 - 这似乎是一个对象的孩子,this.value - 顺便说一句,我是一个JavaScript新手,但是,当我试图给它另一个变量传递时,由l表示的字符串停止工作。试图传递变量type 1的{​​{1}}下方不起作用,否则就行了。我也尝试过l,但这不起作用。任何人都可以帮助我使用正确的语法来传递变量吗?谢谢。

l '+

2 个答案:

答案 0 :(得分:3)

如果字符串包含带有双引号的"Check this out.",那么这就是生成的HTML标记的样子(添加了格式):

<form action="mail.php" method="post">
  <input type="text" onkeyup="showResult(this.value,"Check this out.")">
  <input type="submit" name="submit" value="Email">
  <div id="livesearch"></div>
</form>

请注意onkeyup的属性值如何包含",这将关闭该属性,从而导致HTML无效。如果字符串包含Check this out.而没有任何引号,则最终结果仍然无效,原因如下:

<form action="mail.php" method="post">
  <input type="text" onkeyup="showResult(this.value,Check this out.)">
  <input type="submit" name="submit" value="Email">
  <div id="livesearch"></div>
</form>

在这种情况下,showResult(this.value,Check this out.)是事件处理程序JavaScript,并且具有语法错误。你想要的是字符串是单引号,所以它不会破坏属性,所以它是有效的JavaScript:

var mailbox = '<form action="mail.php" method="post"><input type="text" onkeyup="showResult(this.value,\''+l+'\')"><input type="submit" name="submit" value="Email"><div id="livesearch"></div></form>';

请注意,建议不要以这种方式附加事件,因为这样容易犯这种错误。而是将事件处理程序分配给DOM元素,而不是HTML:

var mailboxHtml;
var keyUpHandler;
if (type==1)
{
    mailboxHtml = '<form action="mail.php" method="post"><input type="text" id="search"><input type="submit" name="submit" value="Email"><div id="livesearch"></div></form>';
    keyUpHandler = function() { showResult(this.value, l); };
}
else
{
    mailboxHtml = '<form action="share.php" method="post"><input type="text" id="search"> Share<div id="livesearch"></div></form>';
    keyUpHandler = function() { showResult(this.value); };
} 

document.getElementById(target).innerHTML = mailbox;
document.getElementById('search').onkeyup = keyUpHandler;

return false;

答案 1 :(得分:0)

如果l是一个字符串,则需要使其在呈现的代码中看起来像一个字符串。

您可以使用JSON.stringify()(实际上是任何类型的变量,包括对象!)。

'..... onkeyup="showResult(this.value,'+JSON.stringify(l)+');" .....'