如何写下面这段PHP代码?

假设有5个id分别是buttun1到buttun5的div, 我在div里加了一个dof的标签,希望得到如果dof的值是0的时候,div中的文字为ABC,否则就是DEF的结果,如下:
<div id="buttun1" class="a" dof="0"></div>
<div id="buttun2" class="a" dof="0"></div>
........
<div id="buttun5" class="a" dof="1"></div>
我写了java循环语句:
for (var i=1; i<=5; i++) {
var dofV = $(".a").attr("dof");
var div = document.getElementById("buttun" + i);
if (dofV == "0") {
div.innerHTML = "ABC";
} else {
div.innerHTML ="DEF";
}
}
可是,运行结果都显示DEF,哪里出了问题?

for(int i = 1; i <= 5; i++) {
WebElement div = driver.findElement(By.id("buttun" + i));
WebElement dofElement = div.findElement(By.tagName("dof"));
int dof = Integer.parseInt(dofElement.getAttribute("value"));
if(dof == 0) {
div.sendKeys("ABC");
} else {
div.sendKeys("DEF");
}
}
上述代码中,首先使用for循环遍历5个id分别是buttun1到buttun5的div,通过driver.findElement(By.id("buttun" + i))方法获取对应的WebElement对象。然后,通过div.findElement(By.tagName("dof"))方法找到div中的dof标签,再通过getAttribute("value")方法获取dof的值,并转换成int类型。
接着,通过if语句判断dof的值是否为0,如果是,就在div中添加文字ABC,否则添加文字DEF。最后,使用div.sendKeys()方法将文字发送到div中。
注意,上述代码中使用了Selenium WebDriver来操作Web页面,需要在代码中引入Selenium的相关包,并启动WebDriver。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-03-24
<?php
for ($i=1; $i<=5; $i++) {
$div = '<div id="buttun'.$i.'" class="a" dof="0"></div>';
if ($i == 5) {
$div = '<div id="buttun'.$i.'" class="a" dof="1"></div>';
}
$dof = intval(preg_replace('/\D/', '', $div));
$text = ($dof == 0) ? 'ABC' : 'DEF';
$divWithText = preg_replace('/<\/div>/', $text.'</div>', $div);
echo $divWithText;
}
?>

上述代码中,我们使用一个for循环来遍历五个ID,并且生成每个div的代码。其中,我们使用一个if语句来为最后一个div设置dof为1的属性。接下来,我们使用intval()和preg_replace()函数来获取div标签中的dof属性值,然后根据dof的值来设置文本为ABC或DEF。最后,我们使用preg_replace()函数将文本添加到div标签中并将其输出。追问

您好,我的页面上已经有这五个div,而不是生成输出div,而且dof==0不一定就在div5上出现,可能是随机出现的,我试着写了一段java for循环语句,但生成的结果都是def,而不出现abc,不知道哪里出现了问题.

第2个回答  2023-03-24
<div id="button1">
<dof>0</dof>
</div>
<div id="button2">
<dof>1</dof>
</div>
<div id="button3">
<dof>0</dof>
</div>
<div id="button4">
<dof>1</dof>
</div>
<div id="button5">
<dof>0</dof>
</div>
// 获取所有id为button1到button5的div元素
const divs = document.querySelectorAll("#button1, #button2, #button3, #button4, #button5");
// 遍历所有div元素
divs.forEach((div) => {
// 获取该div元素下的dof标签的值
const dofValue = div.querySelector("dof").textContent;

// 根据dof的值设置div元素的文字
if (dofValue === "0") {
div.textContent = "ABC";
} else {
div.textContent = "DEF";
}
});
第3个回答  2023-03-24
for (int i = 1; i <= 5; i++) {
Element div = doc.getElementById("buttun" + i);
String dofValue = div.attr("dof");
if ("0".equals(dofValue)) {
div.text("ABC");
} else {
div.text("DEF");
}
}
在这个代码中,我们使用了一个 for 循环,循环变量 i 从 1 到 5,每次迭代都通过 doc.getElementById() 方法获取 id 为 "buttun" + i 的 div 元素,然后使用 attr() 方法获取 div 元素的 dof 属性的值。如果 dof 的值是 0,我们就使用 text() 方法将 div 元素的文本内容设置为 "ABC",否则设置为 "DEF"。追问

您好,运行没有成功

第4个回答  2023-04-13
问题出在获取 dof 属性的方式上。您使用了 jQuery 的选择器 .a 选中了所有 class 为 a 的元素,然后尝试通过 .attr("dof") 获取属性值,但是这样获取的属性值都是第一个匹配到的元素的 dof 值,所以造成了结果都是 "DEF" 的问题。
正确的做法是需要在循环中针对每个元素进行操作,可以使用 eq() 方法获取当前循环到的元素,例如:
for (var i = 1; i <= 5; i++) {
var dofV = $("#buttun" + i).attr("dof"); // 使用 #id 选择器获取当前元素的 dof 属性值
var div = document.getElementById("buttun" + i);
if (dofV == "0") {
div.innerHTML = "ABC";
} else {
div.innerHTML = "DEF";
}
}
或者直接使用 jQuery 的 .each() 方法,遍历每个符合条件的元素,例如:
$(".a").each(function () {
var dofV = $(this).attr("dof");
if (dofV == "0") {
$(this).html("ABC");
} else {
$(this).html("DEF");
}
});
以上两种方法均可以实现您的需求。
相似回答