为啥Js中图片利用prompt接收到图片宽度后,如果在数字后加px会导致宽度变为零?
时间: 2024-10-06 18:06:00 浏览: 20
javascript中常见的3种信息提示框(alert,prompt,confirm)
5星 · 资源好评率100%
在JavaScript中,`prompt`函数返回的是字符串类型的数据,用户输入的图片宽度如果包含单位(如“px”),它会被当作字符串处理,而不是数值。当你尝试将这样的字符串转换为数字并用于设置元素的宽度时,浏览器会把整个字符串(包括单位)视为一个单独的值,导致宽度被解析为0。
例如,如果你获取到的图片宽度字符串是 "100px",而直接赋值给元素的 `width` 属性,JavaScript 会将其解释为一个空字符串,因为 `prompt` 返回的是 "100" 而不是 "100px"。
正确的做法是先通过正则表达式或其他方法去除单位,然后将剩下的纯数字转换为数字类型。例如:
```javascript
let userInput = prompt("请输入图片宽度");
let widthWithoutUnit = userInput.replace(/px/g, ''); // 移除 'px'
let numericWidth = parseInt(widthWithoutUnit); // 将字符串转为整数
// 然后设置元素的宽度
document.getElementById('image').style.width = numericWidth + 'px'; // 正确设置宽度
```
阅读全文