2013-05-30 33 views
0

我是Chrome扩展/ java脚本开发的新手,我被困在以下练习中。通过弹出按钮获取文本框的值

我创建了一个带有按钮和文本框的弹出窗口。我想在按下提交按钮时将文本框的值传递给一个警报。我有以下代码至今:

popup.html

<div id="popup"></div> 
<form name="q"> 
    <input name="query" id="userQuery" type="text" /> 
    <button id="button1">Submit</button> 
    <!-- <input type="button" name="button" value="query" /> --> 
</form> 

popup.js

document.addEventListener('DOMContentLoaded', function() { 
    console.log(document.getElementById('userQuery')); 
    document.getElementById('button1').addEventListener('click', myAlert(document.getElementById('userQuery'))); 
}); 

function myAlert(query){ 
    alert(query.value) 
} 

不过,我得到 “空” 为query.value因此警报空了。 我还注意到,当弹出窗口中点击扩展名时,我也收到一个提醒,我不明白为什么,我用'click'和'onclick',但我得到同样的问题。

任何提示或帮助将不胜感激!

回答

0

一种方式做到这一点:

document.getElementById('button1').addEventListener('click', function() { myAlert(document.getElementById('userQuery')); }); 

在代码中,表达myAlert(document.getElementById('userQuery'))评估时addEventListener被调用。这就是为什么当页面加载时看到空白的警报。相反,您需要传递一个函数,该函数将在发生点击事件时执行。

+0

谢谢!它解决了我的两个问题。解决它通过发送: document.getElementById('button1')。addEventListener('click',function(){myAlert(document.getElementById('userQuery')。value);}); – superman251

0

试试这个$("#userQuery").val() OR document.getElementById("userQuery").value

,而不是document.getElementById('userQuery')

+0

嗨Ramesh,这两个替代品都给我提供了一个空白以及 – superman251

相关问题