您的“问题”确实包含多个问题,因此我将答案分为多个部分。
<select> 和 <option>
要最初选择<select> 中的<option>,请将selected 属性添加到<option>。选择 <option> 会使 <select> 具有所选选项的值。
var select = document.querySelector('select');
var code = document.querySelector('code');
select.addEventListener('change', () => code.textContent = select.value);
code.textContent = select.value;
body {display:flex;align-items:center;gap:0.5rem}
code {padding:0 0.2rem;background:lightgray}
<select>
<option value="first">First option</option>
<option value="second" selected>Second option, initially selected</option>
<option value="third">Third option</option>
</select>
<span>Select's 'value': <code></code></span>
给<select> 一个value-attribute 将被浏览器引擎忽略,因为HTML5 没有指定<select>-tag 有一个value-attribute。
注意: HTML 属性 value 和 JavaScript 属性 .value 不一定相互关联。
请参阅此示例以供参考:
var select = document.querySelector('select');
var code = document.querySelector('span > code');
select.addEventListener('change', evt => {
code.textContent = evt.target.value;
});
code.textContent = select.value;
body {display:flex;flex-flow:column;align-items:flex-start;gap:0.5rem}
code {padding:0 0.1rem;background:lightgray}
<div>
<code><select></code> has the attribute <code>value="from-select"</code>.
</div>
<select value="from-select">
<option value="from-opt1">Opt1</option>
<option value="from-opt2">Opt2</option>
</select>
<span>Select's 'value': <code></code></span>
要动态更改<option> 的值,您必须使用 JavaScript。
var input = document.querySelector('input');
var option = document.querySelector('option');
var code = document.querySelector('code');
// Ignore; update 'pre.textContent' when changing 'value'
option.setAttribute = function(name, value) {
HTMLElement.prototype.setAttribute.call(this, name, value);
if (name === 'value') code.textContent = value;
};
// How to change the 'value'-attribute using JS
document.querySelector('button').addEventListener('click', () => {
option.setAttribute('value', input.value);
input.value = '';
});
body {display:flex;flex-flow:column;align-items:flex-start;gap:0.5rem}
code {padding:0.1rem 0.2rem;background:lightgray}
<span>
<input>
<button>Change value of 'Option'</button>
</span>
<select>
<option value="initial-value">Option</option>
</select>
<span>Option's value: <code>initial-value</code></span>
关于“为什么 html 开发人员会这样”
释义:为什么 HTML 不能自行更改其标记?
原因是,HTML 最初是为通过 Internet 提供的科学文档创建的。
由于互联网本质上是一个由互连的、可能完全不同的设备组成的网络,因此 HTML 必须尽可能不特定且“与设备无关”,以允许在几乎任何具有显示器的设备上呈现它.
因此,任何其他资源(例如样式表、脚本、图像)对于 HTML 的呈现都应该是可选的,因为 HTML 应该可以“按原样”呈现。
HTML 还应该是向后兼容的,这意味着未来对 HTML 规范的更改不应妨碍 HTML 的服务。这意味着,任何未知的……基本上都会被渲染引擎(今天的浏览器)忽略,因此所有当时存在的功能仍然可以按预期工作。
最初,除了提供静态内容之外,HTML 并没有任何其他功能。然而,在过去的几十年里,互联网经历了技术进步的“热潮”,现在,JavaScript 事实上任何浏览器引擎和网站的一部分,使它们能够拥有先进的功能和互动。
互联网处于不断发展的状态,而且永远如此。忽视互联网的新状态及其规范(例如浏览器引擎等)将意味着一个人没有与时俱进,对自己隐瞒新的、现代的和当前的信息和知识,实质上是把一个人抛在后面。
“传统”在任何技术领域都很难找到,因为新的进步和发现只是其中的一部分。
要了解有关互联网根源的更多信息(即使视频主题是关于 CSS),我建议观看 MDN's video about why CSS is weird (and how HTML came to be)。
关于你的“问题”...
正如您在 cmets 中进一步解释的那样:
我有一些关于数据库中每个用户的数据。这些数据来自
报名表格。该表单具有选择标签。现在,用户想要改变
他的个人资料中的一些数据。 Tha数据需要在选择时呈现
标签。使用 value 属性来做到这一点是很正常的,就像在任何
其他输入 - 没有 javascript
你可以通过两种方式做到这一点:
- 为每个用户数据创建一个带有一个字段的
<form>。有了这个,您还有两个选择:
- 准备字段以保存其当前数据。然后,用户可以轻松提交他的更改。
- 将字段留空。如果提交后字段为空,则忽略建议的“更改”。
- 让用户一次选择要更改的数据。同样,还有两个选项可以实现这一目标:
- 获取该字段的当前数据。用户可以对其进行更改,然后再次轻松提交。
- 让用户重新输入新数据,然后提交。
以下是选项 2.2 的 HTML 在实现时的外观的简单示例:
注意:我将 <button> 的默认类型从 type="submit" 更改为 type="button"用于演示目的。
var select = document.querySelector('select');
var input = document.querySelector('input');
document.querySelector('button').addEventListener('click', () => {
console.log(`Would change user-data '${select.value}' to the value '${input.value}'.`);
});
<form>
<select>
<option value="name">Name</option>
<option value="address">Address</option>
<option value="email">E-Mail</option>
</select>
<input>
<button type="button">Submit</button>
</form>