为什么我的javascript代码无法获得输入值

时间:2017-12-02 17:51:46

标签: javascript input

我无法获得所选Id的值。

这里是html和javascript



List<NewsModel> resultList = new ArrayList<>();
NewsAdapter adapter ;
public class NewsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View newsView = inflater.inflate(R.layout.fragment_news, container, false);
    RecyclerView newsRecyclerView = (RecyclerView) newsView.findViewById(R.id.news_list);
    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
    newsRecyclerView.setLayoutManager(layoutManager);
    adapter = new NewsAdapter(resultList);
    newsRecyclerView.setAdapter(adapter);
    getNews();
    return newsView;
}

   private void getNews(){
        AsyncTask<Void,Void,String> asyncTask = new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(final Void... voids) {
                String resultString = null;
                OkHttpClient client = new OkHttpClient();
                Request request = new Request.Builder()
                        .url("http://www.career.fudan.edu.cn/jsp/career_talk_list.jsp?count=50&list=true")
                        .build();
                Response response = null;
                try {
                    response = client.newCall(request).execute();
                    resultString = response.body().string();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                return resultString;
            }

            @Override
            protected void onPostExecute(final String resultString) {
                super.onPostExecute(resultString);
                resultList.clear();
                resultList.addAll(getResult(resultString));
                adapter.notifyDataSetChanged();
            }
        }.execute();
    }
&#13;
&#13;
&#13;

我在chrome,opera和firefox上测试过它。什么都行不通。我也使用<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <input id="input"> <button id="button" type="button" name="button">Search</button> <script> const der = document.getElementById('input').value; document.getElementById('button').addEventListener('click', function() { alert(der); }); </script> </body> </html>而不是var,这也不起作用。

我想获取所选Id的输入值。我真的无法在代码中看到任何问题

8 个答案:

答案 0 :(得分:1)

const der = document.getElementById('input').value;

这是你的问题。 在输入任何内容之前,您将获得输入字段的值。 尝试这样做:

document.getElementById('button').addEventListener('click',
      function() {
        const der = document.getElementById('input').value;
        alert(der);
      });

答案 1 :(得分:0)

您需要将作业移至der进入点击处理程序。目前,在加载页面时评估der,而不是在单击按钮时评估。{/ p>

  document.getElementById('button').addEventListener('click',
  function(){
    const der = document.getElementById('input').value;
    alert(der);
  });

答案 2 :(得分:0)

首次运行代码时设置

der,并给出空值。单击按钮时重置它。

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>

  <input id="input">
  <button id="button" type="button" name="button">Search</button>

  <script>
 

    document.getElementById('button').addEventListener('click',
      function() {
        const der = document.getElementById('input').value;
        alert(der);
      });
  </script>

</body>

</html>

答案 3 :(得分:0)

您的问题是您的代码会在页面加载时立即运行。由于页面加载时为空,因此该变量为空(您可以通过在控制台中键入der来验证该变量,它不是错误,而是一个值)。

您可以通过将变量赋值信息移动到该函数来修复它,以便检查您何时准备就绪。

答案 4 :(得分:0)

您的脚本不起作用,因为您在填写之前从输入字段获取值,然后在单击按钮时提醒该值,而不是当前值。

解决方案是将获取值的行移动到单击按钮时调用的回调函数中:

&#13;
&#13;
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>

  <input id="input">
  <button id="button" type="button" name="button">Search</button>

  <script>
    document.getElementById('button').addEventListener('click',
      function() {
        const der = document.getElementById('input').value;
        alert(der);
      });
  </script>

</body>

</html>
&#13;
&#13;
&#13;

答案 5 :(得分:0)

试试此代码

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>

  <input id="input" type="text">
  <button id="button" type="button" name="button">Search</button>

  <script>
    document.getElementById('button').addEventListener('click',
      function() {
        alert(document.getElementById('input').value);
      });
  </script>

</body>

</html>

答案 6 :(得分:0)

在与表单输入进行任何交互之前,您的代码会在脚本执行后立即存储输入的值。一种解决方案是在- (UIImage*)imageWithImage:(UIImage *)sourceImage fixedHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha{ CGSize imageSize = [sourceImage size]; UIGraphicsBeginImageContext(imageSize); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(context, 0, sourceImage.size.height); CGContextScaleCTM(context, 1.0, -1.0); CGRect rect = CGRectMake(0, 0, sourceImage.size.width, sourceImage.size.height); CGContextSetBlendMode(context, kCGBlendModeNormal); CGContextDrawImage(context, rect, sourceImage.CGImage); CGContextSetBlendMode(context, kCGBlendModeColor); [[UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:alpha] setFill]; CGContextFillRect(context, rect); CGContextSetBlendMode(context, kCGBlendModeDestinationIn); CGContextDrawImage(context, rect, sourceImage.CGImage); CGContextFlush(context); UIImage *editedImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return editedImage; } 中存储对输入的引用,然后在click事件中调用const der

der.value

答案 7 :(得分:0)

使用DOM时,您希望从输入字段中获取值。按钮只是您捕捉事件的方式。这就是我们使用事件监听器的原因。触发事件后,程序会根据您要求检索的内容知道检索值。

所以,你应该像这样重写你的事件:

document.getElementById('button').addEventListener('click',
   function() {
      let der = document.getElementById('input').value;
      //Now you can call some async code here to "play" with this value
  });

注意:我使用了let,因为如果此值会根据用户的输入而改变,我会看不到使用const的原因。