PHP如何通过名称寻址获取对象属性 提交时获取td元素所有属性
实现方法
首先明确:PHP是服务端语言,根本没法直接读取浏览器里渲染完成的DOM元素属性、实时样式,不存在一条PHP命令就能直接搞定这个需求的方法,必须分前端采集、后端接收两步做。
前端采集逻辑(点击提交时触发)
你要的height、backgroundColor这类渲染后样式,还有td上挂的所有属性、内部文本,都得先用JS在浏览器端拿到,再随表单一起发给PHP。
针对你给出的<td name="td_1_name">qwerty</td>元素,参考实现代码如下:
<form id="submitForm" method="post" action="你的PHP处理文件路径"> <table> <tr> <!-- 给目标td加个id方便精准定位,不影响原有渲染 --> <td id="target_td" name="td_1_name">qwerty</td> </tr> <!-- 其他表格行正常写 --> </table> <button type="submit">提交</button> <!-- 隐藏输入框用来存采集到的td数据,会随表单自动提交 --> <input type="hidden" name="td_collect_data" id="td_collect_data"> </form> <script> const form = document.getElementById('submitForm') const td = document.getElementById('target_td') const hiddenInput = document.getElementById('td_collect_data') form.addEventListener('submit', function() { // 先拿td上写的所有原生、自定义属性 const attrMap = {} for (let attr of td.attributes) { attrMap[attr.name] = attr.value } // 拿浏览器计算后的实际样式,height、背景色都在这里 const realStyle = window.getComputedStyle(td) const styleRes = { height: realStyle.height, backgroundColor: realStyle.backgroundColor } // td本身没有value属性,你要的内容就是它内部的文本 const textContent = td.textContent.trim() // 所有数据转成JSON塞到隐藏域 hiddenInput.value = JSON.stringify({ attrs: attrMap, style: styleRes, content: textContent }) }) </script>
PHP端接收数据
表单提交到PHP之后,直接读POST参数解析就能拿到所有需要的值:
<?php // 接收前端传的JSON字符串,转成PHP数组 $tdInfo = json_decode($_POST['td_collect_data'], true); // 按需取值就行 // 高度:$tdInfo['style']['height'] // 背景色:$tdInfo['style']['backgroundColor'] // td文本内容:$tdInfo['content'] // td上的name属性:$tdInfo['attrs']['name'] 对应值为 td_1_name
避坑提醒:别想着直接用PHP读页面源码拿这些值,源码里只有写死的静态属性,JS动态改的样式、浏览器自适应计算出来的高度这类实时值,源码里根本没有,必须走前端采集提交的路径。
内容的提问来源于stack exchange,提问作者Val
相关产品推荐
相关产品推荐

