WebApis学习笔记 更新完毕 2022最新黑马程序员

Web Apis第一天

Dom获取&属性操作

WebAPi基本认知

作用和分类

作用:使用JS去操作html和浏览器

分类:DOM(文档对象模型) BOM(浏览器对象模型)

什么是DOM

用来呈现以及与任意HTML或XML文档交互的API

DOM是浏览器提供的一套专门用来操作网页内容的功能

DOM作用:开发网页内容特效和实现用户交互

DOM树

将HTML文档以树状结构直观的表现出来,称为文档树或DOM 描述网页内容关系的名词

作用:文档树直观的体现了标签与标签之间的关系

DOM对象 重

浏览器根据html标签生成的Js对象

所有的标签属性都可以在这个对象上面找到

修改这个对象的属性会自动映射到标签身上

DOM的核心思想 ==> 把网页内容当作 对象 来处理

document对象 ==> 是DOM里提供的一个对象 所以它提供的属性 和方法都是 用来访问和操作网页内容的 如 document.write()

网页所有内容都在document 里面

获取DOM对象 重

根据CSS选择器来获取DOM元素(重点)

查找元素DOM元素就是利用Js选择页面中标签元素.

1.选择匹配的第一个元素
document.querySelector('css选择器')

query ==>查询 Selector选择

参数 包含一个或多个有效的CSS选择器 字符串

返回值 CSS选择器匹配的 第一个元素 一个HTML Element对象 没匹配到返回null

选择匹配的多个元素:

document.querySelectorAll('css选择器')

参数 包含一个或多个有效的CSS选择器 字符串

返回值 CSS选择器匹配的 NodeList对象集合

得到的是一个 伪数组: ==>又长度又索引号的数组 但是没有pop() push()等数组方法

想要得到里面的每一个对象, 需遍历(for)的方式获得

其他获取DOM元素方法(了解)
// 根据id获取一个元素
document.getElementById('nav')
// 根据 标签获取 一类元素 获取页面 所有div
document.getElementsByTagName('div')
// 根据 类名获取元素 获取页面 所有类名为 w的
document.getElementsByClassName('w')

操作元素内容

对象 .innerText属性

元素 innerText属性 ==> 将文本内容添加/更新到任意标签位置 == 显示纯文本 不解析标签

对象innerHTML属性

将文本内容添加/更新到任意标签位置 == 会解析标签 多标签建议使用模板字符

操作元素属性

操作元素常用属性

​ 可以通过JS设置/修改 标签元素属性 比如通过 src更换 图片

最常见的属性比睿:href title src等

语法:

对象.属性 =

举例说明:

// 1 获取元素
const pic = document.querySelector('img')
// 2 操作元素
pic.src = './images/b01.jpg'
[ic.title = '刘德华黑马演唱会'
操作元素样式属性

通过JS设置 / 修改标签元素的样式属性

==> 通过 轮播图小圆点自动更换颜色样式

==> 点击按钮可以滚动图片 这是移动的图片位置left等等

通过style属性操作CSS
语法:
对象.style.样式属性 =
通过类名操作CSS

​ 如果修改的样式比较多,直接通过style属性修改比较繁琐 我们可以通过借助于css类名的形式

// 语法:
// active 是一个css类名
元素.className = 'active'

注: 由于class是关键字 所以使用className代替 == className是使用新值换旧值 如需添加一个类 要保留之前的类名

通过classList操作类控制CSS 常用

​ 为了解决className 容易覆盖以前的类名,我们可以通过calssList方式追加和删除类名

// 语法:
// 追加一个类
元素.classList.add('类名')
// 删除一个类
元素.classList.remove('类名')
// 切换一个类
元素.classList.toggle('类名')
操作表单元素 属性

​ 表单很多情况 需要修改属性 比如点击眼睛可以看到密码 本质是把表单类型转为文本框

​ 正常的有属性有取值的 跟其他的标签属性没有任何区别

获取: DOM对象.属性名

设置: DOM对象.属性名 = 新值

表单.value = '用户名'
表单.type = 'password'

​ 表单属性中添加就有效果 移除就没效果 一律使用布尔值表示 如果为true 代表添加了该属性 如果是false代表移除了该属性

比如 disabled ==> 禁用吗?

checked ==> 勾选

selected ==> 下拉菜单

<script>
        // 接收布尔值
        //  1 获取
        const input = document.querySelector("input");
    //   console.log(input.checked);  // false   只接收布尔值
    input.checked = true; // 勾选
    //   input.checked = "true"; // 会选中 不提倡 有隐式转换

    //   1 获取
    const button = document.querySelector("button");
    //   默认false  不禁用    disabled ==> 禁用吗?
    //   console.log(button.disabled);
    button.disabled = true; // 禁用按钮
</script>
自定义属性

标准属性: 标签天生自带的属性 比如 class id title 等 可以直接使用点语法操作 比如 disabled checked selected

自定义属性:

在html5中推出来了专门的data-自定义属性

在标签上一律以data-开头

在DOM对象上一律以dataset对象方式获取

<body>
    <div class="box" data-id="10">盒子</div>
	<script>
        const box = document.querySelector('.box')
		console.log(bix.dataset.id)
	</script>
</body>
    <script>
        // 自定义属性
        const one = document.querySelector("div");
    //    怎么拿到自定义属性
    console.log(one.dataset.id); // 想获取里面的1 加一个.id
    console.log(one.dataset.sm); // 打印出什么
    </script>

定时器-间歇函数

​ 定时器函数可以开启和关闭定时器

1 开启定时器

setInterval(函数,间隔时间)

​ 作用:每间隔多少时间 调用这个函数 ==> 间隔时间单位是毫秒 ms

​ 定时器返回的是一个id数字

2 关闭定时器


                
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的天气预报程序的代码: 1. 创建一个空的 Android Studio 项目,然后在项目的 build.gradle 文件中添加以下依赖: ``` dependencies { implementation 'com.android.volley:volley:1.1.1' } ``` 2. 在项目的 layout 文件夹下创建一个名为 activity_main.xml 的布局文件,添加以下代码: ``` <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/city_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入城市名称" android:inputType="text" app:layout_constraintTop_toTopOf="parent"/> <Button android:id="@+id/search_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="查询" app:layout_constraintTop_toBottomOf="@id/city_input" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> <TextView android:id="@+id/result_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" app:layout_constraintTop_toBottomOf="@id/search_btn" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="16dp"/> </androidx.constraintlayout.widget.ConstraintLayout> ``` 3. 在项目的 Java 文件夹下创建一个名为 MainActivity.java 的 Java 文件,添加以下代码: ``` import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.Volley; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class MainActivity extends AppCompatActivity { private EditText cityInput; private Button searchBtn; private TextView resultText; private RequestQueue requestQueue; private String apiUrl = "http://apis.juhe.cn/simpleWeather/query"; private String apiKey = "你的API Key"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cityInput = findViewById(R.id.city_input); searchBtn = findViewById(R.id.search_btn); resultText = findViewById(R.id.result_text); requestQueue = Volley.newRequestQueue(this); searchBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String city = cityInput.getText().toString(); if (city.isEmpty()) { Toast.makeText(MainActivity.this, "城市名称不能为空", Toast.LENGTH_SHORT).show(); } else { searchWeather(city); } } }); } private void searchWeather(String city) { String url = apiUrl + "?city=" + city + "&key=" + apiKey; JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { int errorCode = response.getInt("error_code"); if (errorCode == 0) { JSONObject result = response.getJSONObject("result"); JSONArray future = result.getJSONArray("future"); StringBuilder builder = new StringBuilder(); for (int i = 0; i < future.length(); i++) { JSONObject item = future.getJSONObject(i); String date = item.getString("date"); String temperature = item.getString("temperature"); String weather = item.getString("weather"); builder.append(date).append(" ").append(temperature).append(" ").append(weather).append("\n"); } resultText.setText(builder.toString()); } else { String reason = response.getString("reason"); Toast.makeText(MainActivity.this, reason, Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(MainActivity.this, "查询天气失败", Toast.LENGTH_SHORT).show(); } }); requestQueue.add(request); } } ``` 4. 将 apiKey 替换为你的 API Key。 5. 运行程序,输入城市名称并点击查询按钮,即可查询到该城市未来几天的天气情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值