Как изменить цвет звездной оценки при наведении мыши, при наведении мыши и при нажатии - PullRequest
0 голосов
/ 30 сентября 2018

Мне нужно, чтобы в fa-star классах mouseenter, mouseout и onclick работали функции каждого тега «list» class / li (например, list list [0, 1, 2 и т. Д.]).То, что я сейчас имею, работает для каждого класса «список».Когда я указываю мышью на звезду из другого класса списка, звезда 1-го класса списка меняется.

Если я наведу курсор мыши на звезду из 1-го тега class / li списка, функция mouseenter должна работать для этого тега class / li списка, а не для другого тега class / li списка.если второй класс 'list', то он должен работать для этого тега 'list' class / li, а не для других.а для 3-го, 4-го и т. д.

в функции rateclick я могу отправить рейтинг на сервер, но не могу его получить.Можете ли вы взглянуть на это тоже?


Вот код:

index.php и style.css

.fa{
    font-size:25px;
   }
   
 
   
li{
  list-style:none;
  padding-left:40px;
  padding-bottom:40px;
  border-bottom:2px solid #ccc;
  width:800px;
 }
 
li:last-child{
             border-bottom:none;
			}
			
  
<?php

require "conx.php";

$sql = "SELECT * FROM customers ORDER BY id ASC";

$query = $conx -> query($sql);

$numrows = $query -> num_rows;

?>

<!DOCTYPE html>

<html>

<link rel="stylesheet" href="css/font-awesome.min.css">

<link rel="stylesheet" href="style.css">

<script src="jquery.min.js"></script>

<body>

<div class="Insert-Into">

<ul>

<?php if($numrows > 0): ?>

<?php while($row = $query -> fetch_assoc()): ?>

<?php $rating = $row["rating"]; ?>

<?php $customerid = $row["id"]; ?>

<li data-rating=<?php echo "$rating"; ?> data-customerid=<?php echo $customerid; ?> class="list">

<br/>
<br/>

<span class="username"><?php echo $row["username"]; ?></span>

<br/>
<br/>

<?php

$i;

$color;

for($i = 1; $i <= 5; $i++){
	
	if($i <= $rating){
		
		$color = "color:orange";
		
	}
	else{
		
		$color = "color:#ccc";
		
	}
	
	echo "<i class='fa fa-star' style='$color;' data-rating='$i' onmouseenter='mouseenterrating($i)' onmouseout='clearstar($rating)' onclick='rateclick($customerid, $i)'></i>";
}

?>

<br/>
<br/>

<b>Description</b>

<br/>
<br/>

<div class="desc"><?php echo $row["description"]; ?></div>

</li>



<?php endwhile; ?>

<?php endif; ?>

</ul>

</div>

<script>
function mouseenterrating(count){
	
	var j;
	
	var fa = document.getElementsByClassName("fa");
	

	
	for(j = 0; j < fa.length; j++){
										
		if(j < count){
						
			fa[j].style.color = "orange";
						
		}
		else{
						
			fa[j].style.color = "#ccc";
						
		}			
				
	}
	

		
}

function clearstar(rating){
	
	var fa = document.getElementsByClassName("fa");
	
	var k;
	
	for(k = 0; k < fa.length; k++){
		
		if(k < rating){
			
			fa[k].style.color = "orange";
			
		}
		else{
			
			fa[k].style.color = "#ccc";
			
		}
		
	}
	
}

function rateclick(customerid, count){
	
	var xhttp = new XMLHttpRequest();
	
	xhttp.open("POST", "rating.php?id="+customerid+"&rate="+count);
	
	xhttp.send();
	
	fetch(customerid);
	
}

function fetch(e){
	
	var xhttp = new XMLHttpRequest();
	
	xhttp.open("GET", "fetch.php");
	
	xhttp.send();
	
}
</script>

</body>

</html>

rating.php

<?php

require "conx.php";

if(isset($_GET['id']) && isset($_GET['rate'])){

$customerid = $_GET['id'];

$rate = $_GET['rate'];

$sql = "UPDATE customers SET rating = '$rate' WHERE id = '$customerid'";

$result = $conx -> query($sql);

}

?>

fetch.php

<?php

require "conx.php";

$sql = "SELECT * FROM customers WHERE id = '".customerid."'";

$result = $conx -> query($sql);

$fetch = $result -> fetch_assoc();

?>

conx.php

<?php

$conx = mysqli_connect("localhost", "root", "");

if(!$conx){
	
	echo "Not connected with localhost";
	
}

$sql = "CREATE DATABASE rating";

$query = $conx -> query($sql);

$dbselect = $conx -> select_db("rating");

if(!$dbselect){
	
	echo "No database selected";
	
}

$sql = "CREATE TABLE customers(id INT(255) NOT NULL AUTO_INCREMENT UNIQUE KEY, username VARCHAR(200) NOT NULL, description VARCHAR(1000) NOT NULL, email VARCHAR(200) NOT NULL PRIMARY KEY, rating INT(5) NOT NULL)";

$query = $conx -> query($sql);

?>

1 Ответ

0 голосов
/ 30 сентября 2018

Опираясь на вашу первоначальную попытку, у меня есть для вас решение:

function onMouseEnter(index){
   var fa = document.getElementsByClassName("fa");
   var j;
   for(j = 0; j < fa.length; j++){
       if(j < index){
           fa[j].style.color = "orange";
       }
       else{
           fa[j].style.color = "#ccc";
       }
   }
}
function onMouseOut(){
    var fa = document.getElementsByClassName("fa");
    var k;
    for(k = 0; k < fa.length; k++){
        fa[k].style.color = "#ccc";
    }
}

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...